【问题标题】:Click Event on UIImageView programmatically in ios在 ios 中以编程方式单击 UIImageView 上的事件
【发布时间】:2023-03-08 03:06:01
【问题描述】:

我正在显示代码中的图像,这里是代码

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

我想以编程方式处理 preArrowImage 上的触摸事件。

【问题讨论】:

标签: iphone ios uiimageview uitouch uitapgesturerecognizer


【解决方案1】:

SWIFT 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
 func tapDetected() {
    print("Imageview Clicked")
}

Objective-c

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
[preArrowImage setUserInteractionEnabled:YES];
[preArrowImage addGestureRecognizer:singleTap];
 
-(void)tapDetected{
    NSLog(@"single Tap on imageview");
  }

【讨论】:

  • 对于 Swift 2,您应该将 Selector("tapDetected") 替换为:"tapDetected:"
  • 默认singleTap.numberOfTapsRequired=1,祝编码愉快
  • '让 singleTap = UITapGestureRecognizer(target: self, action: #selector(NavigationViewController.tapDetectedImage))'
  • 这太棒了
【解决方案2】:

只需在图片上添加UITapGesture,但请记住使其UserInteraction Enabled

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

【讨论】:

    【解决方案3】:

    现在在 Swift 中!

    let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
    singleTap.numberOfTapsRequired = 1
    
    preArrowImage.userInteractionEnabled = true
    preArrowImage.addGestureRecognizer(singleTap)
    
    
    //Action
    func tapDetected() {
        println("Single Tap on imageview")
    }
    

    【讨论】:

      【解决方案4】:

      斯威夫特 3

      UIImageView 启用 UserInterAction

       override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
              super.touchesEnded(touches, with: event)
      
              if let touch = touches.first {
                  if touch.view == self.imgVwPostPreview { //image View property
      
                      //Do your actions
                      //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
                  }
              }
          }
      

      【讨论】:

        【解决方案5】:

        在视图控制器中使用带有视图的故事板。


        选择其中一个手势识别器后,将其拖到您的控制器上。
        现在它将显示在“文档大纲”和视图控制器 xib 的标题中。


        拖动手势到 UILable



        在头文件中创建 IBAction 方法
        现在将它从处理程序拖到 xib 中的手势图标

        【讨论】:

          【解决方案6】:

          Xamarin.iOS

          UIImageView preArrowImage; // also give it frame
          var singleTap = new UITapGestureRecognizer(TapDetected);
          singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
          singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
          preArrowImage.UserInteractionEnabled = true;
          preArrowImage.AddGestureRecognizer(singleTap)
          
          bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
          {
              return true;
          }
          
          void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
          {
              print("Imageview Clicked")
          }
          

          【讨论】:

            【解决方案7】:

            如果您的 UIImageView 是从 Storyboard 或 Nib 获得的 IBOutlet,您可以将 UIGestureRecognizer 添加到图像视图,启用用户交互并将 IBAction 连接到手势识别器。

            欲了解更多信息,请查看我对这个问题的回答:How to you make a UIImageView on the storyboard clickable (swift)

            【讨论】:

              【解决方案8】:

              这是另一种选择:作弊。

              我的意思是,横向思考。

              设置你的 UIImage 你想要的方式,裁剪,适合的外观等等。

              用 UIView 覆盖它(等尺寸、位置等)

              将背景设置为 clearcolour,并将类设置为 UIControl。

              将 touch up inside 事件指向您的处理程序,瞧。

              【讨论】:

              • 比 UIView 更简单:使用按钮并删除文本。 ;)
              猜你喜欢
              • 1970-01-01
              • 2022-06-12
              • 2013-05-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-06-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多