统计从多个 UIView 中随机抽出的 UIView 数量,即:从 9 个 UIView 中随机抽出 5 个 UIView,然后执行操作

Posted

技术标签:

【中文标题】统计从多个 UIView 中随机抽出的 UIView 数量,即:从 9 个 UIView 中随机抽出 5 个 UIView,然后执行操作【英文标题】:Counting number of UIViews that have been randomly tapped from a number of UIViews, ie: random 5 UIViews tapped from 9 UIViews, then do action 【发布时间】:2014-10-18 12:14:55 【问题描述】:

我是 Objective c 的新手,已经环顾了好几天,但找不到答案。我在一个容器视图中有 9 个 imageView,每个都只能点击一次,我想在随机 5 个 UIImageView 被点击后做一些事情。这是我为他们每个人使用的代码来体验一次点击。如果必须更改代码我会,所以请提供任何帮助。

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(moveToNextMovingRectangle:)];

    tapGestureRecognizer.numberOfTouchesRequired = 1;
    tapGestureRecognizer.numberOfTapsRequired = 1;

    [self.imageView1 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView2 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView3 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView4 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView5 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView6 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView7 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView8 addGestureRecognizer:tapGestureRecognizer];
    [self.imageView9 addGestureRecognizer:tapGestureRecognizer];

//    if (5 random imageShapes have been tapped)
//        
//        do something
//    

【问题讨论】:

仅供参考,一个 UITapGestureRecognizer 实例只能附加到一个视图。您需要为每个视图创建一个新视图。 tapGestureRecognizer.numberOfTapsRequired = 9;应该工作。 【参考方案1】:

创建一个新的计数器变量并在每次用户点击图像时增加它的值,当它达到 5 时,你可以做任何你想做的事情。像这样:

首先在ViewController 类中声明全局计数器变量,例如:

var counter : Int = Int()


UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(moveToNextMovingRectangle:)];

tapGestureRecognizer.numberOfTouchesRequired = 1;
tapGestureRecognizer.numberOfTapsRequired = 1;

[self.imageView1 addGestureRecognizer:tapGestureRecognizer];
[self.imageView2 addGestureRecognizer:tapGestureRecognizer];
[self.imageView3 addGestureRecognizer:tapGestureRecognizer];
[self.imageView4 addGestureRecognizer:tapGestureRecognizer];
[self.imageView5 addGestureRecognizer:tapGestureRecognizer];
[self.imageView6 addGestureRecognizer:tapGestureRecognizer];
[self.imageView7 addGestureRecognizer:tapGestureRecognizer];
[self.imageView8 addGestureRecognizer:tapGestureRecognizer];
[self.imageView9 addGestureRecognizer:tapGestureRecognizer];
self.moveToNextMovingRectangle()




   func moveToNextMovingRectangle() 

 // Increment in counter value 
    counter += 1;
    if (counter>=5)
    
        //do what ever you want
    
    else 
        //get a random number using  arc4random() method and show your next imageview
    

我认为这会奏效。

【讨论】:

我怎样才能使计数器计算水龙头的次数?我制作的计数器无法计算点击次数或点击的图像。【参考方案2】:

假设我们已经将我们的图像视图保存在 nsarray 和一个计数器来跟踪点击

NSArray *imgViews = @[self.imageView1,self.imageView2.....,self.imageView9];  
int counter;

然后在您的选择器中执行此操作

-(void) moveToNextMovingRectangle  
counter +- 1;
    if (counter>=5)
    
        //do what ever you want
    
    else 
        //get a random number using  arc4random() method and show your next imageview
    

【讨论】:

我似乎无法将点击次数链接到计数器或将点击的 imageViews 链接到计数器。请让像我这样的新人更清楚。 我们使用了一个名为 counter 的全局变量,并在每次点击 imageview 时递增它,请参阅 moveToNextMovingRectangle 选择器

以上是关于统计从多个 UIView 中随机抽出的 UIView 数量,即:从 9 个 UIView 中随机抽出 5 个 UIView,然后执行操作的主要内容,如果未能解决你的问题,请参考以下文章

如何用c#从一组数中随机抽取数字?

采用多种算法,模拟摇奖:从1-36中随机抽出8个不重复的数字

采用多种算法,模拟摇奖:从1-36中随机抽出8个不重复的数字

R语言:随机抽样(sample函数)

UIView 不会改变 Rotate 的宽度和高度

怎么求t统计量数值