102

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

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

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

4

8 回答 8

260

斯威夫特 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")
}

目标-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");
  }
于 2013-06-15T05:35:10.853 回答
18

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

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];
于 2013-06-15T05:32:06.287 回答
6

现在在斯威夫特!

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")
}
于 2015-05-21T22:55:22.867 回答
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!)
            }
        }
    }
于 2016-12-26T09:13:49.310 回答
3

在视图控制器中使用带有视图的故事板。
视图可能是 ImageView、UIView、UILabel、TextField 或其他控制器


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

文档输出行和 xib 中的手势图标
将手势拖动到 UILable
将手势拖动到 UILable


在头文件中手动创建(IBAction)方法


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

于 2015-05-20T05:24:25.493 回答
1

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")
}
于 2020-04-06T08:40:26.770 回答
0

这是另一种选择:作弊。

我的意思是,横向思考。

设置你的 UIImage 你想要的,裁剪的,适合的,无论如何。

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

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

将内部事件的修饰指向您的处理程序,瞧。

于 2017-05-24T14:48:41.280 回答
0

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

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

于 2017-05-18T16:49:51.593 回答