【问题标题】:how can check that which uiimageview is presently clicked?如何检查当前单击了哪个 uiimageview?
【发布时间】:2016-12-28 09:16:37
【问题描述】:

我有三个UIImageview。我使用tapGestureUIImageview 设置操作。我希望每个 UIImageview 都有不同的操作。如何检查当前点击了哪个 UIImageview?

UITapGestureRecognizer *singleTap =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
[singleTap setNumberOfTapsRequired:1];
[_imageOne addGestureRecognizer:singleTap];
[_imageTwo addGestureRecognizer:singleTap];
[_imageThree addGestureRecognizer:singleTap];

-(void)singleTapping:(UIGestureRecognizer *)recognizer {
}

【问题讨论】:

  • 您可以简单地为所有图像视图添加标签值,同时识别您可以获得标签值并可以执行适当的操作。
  • 是的,你可以通过添加标签来实现

标签: ios objective-c uiimageview


【解决方案1】:

您可以使用以下代码进行检测:

-(void)singleTapping:(UITapGestureRecognizer *) recognizer{
        if (recognizer.view == _imageOne){

        } else if (recognizer.view == _imageTwo) {

        }else
        {
        }
    }

【讨论】:

    【解决方案2】:

    UIGestureRecognizer 用于单个视图。 Apple documentation中有这个明确的信息:

    手势识别器附加到视图

    每个手势识别器都与一个视图相关联。相比之下,一个 视图可以有多个手势识别器,因为单个视图 可能会响应许多不同的手势。对于手势识别器 识别在特定视图中发生的触摸,您必须附加 该视图的手势识别器。

    【讨论】:

      【解决方案3】:

      首先,您不能将相同的UITapGestureRecognizer 附加到多个视图。

      因此,您的代码将无法运行,您必须创建三个 UITapGestureRecognizer 实例并将其附加到如下视图:

      UITapGestureRecognizer *singleTapImg1 =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
      
      [singleTapImg1 setNumberOfTapsRequired:1];
      
      UITapGestureRecognizer *singleTapImg2 =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
      
      [singleTapImg2 setNumberOfTapsRequired:1];
      
      UITapGestureRecognizer *singleTapImg3 =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
      
      [singleTapImg3 setNumberOfTapsRequired:1];
      
      [_imageOne addGestureRecognizer:singleTapImg1];
      [_imageTwo addGestureRecognizer:singleTapImg2];
      [_imageThree addGestureRecognizer:singleTapImg3];
      

      现在,您可以使用下面的代码来获取点击了哪个 imageview 并据此执行操作:

      -(void)singleTapping:(UIGestureRecognizer *)recognizer {
      
         if (recognizer.view == _imageOne){
      
             //_imageOne tapped
      
         } 
         else if (recognizer.view == _imageTwo) {
      
             //_imageTwo tapped
      
         }else{
      
             //_imageThree tapped
         }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-26
        • 2014-07-15
        相关资源
        最近更新 更多