在ios中以编程方式单击UIImageView上的Event

问题描述 投票:82回答:7

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

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
7个回答
231
投票

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 4.2

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

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

18
投票

只需在图像上添加UITapGesture,但请记住启用UserInteraction。

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

4
投票

现在在斯威夫特!

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!)
            }
        }
    }

3
投票

在视图控制器中使用故事板与视图。

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

将手势拖动到UILabel

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


0
投票

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

有关更多信息,请查看我对此问题的回答:How to you make a UIImageView on the storyboard clickable (swift)


0
投票

这是另一个选择:作弊。

我的意思是,横向思考。

设置你的UIImage你想要的,裁剪的,方面适合的等等。

用UIView叠加它(等尺寸,位置等)

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

将事件内部的触摸指向处理程序,瞧。

© www.soinside.com 2019 - 2024. All rights reserved.