在UIScrollView的内容上检测触摸事件

Agg*_*sor 0 xcode objective-c uiscrollview uiimageview ios

我有一个UIScrollview里面有UIImageView.

如果我在添加到滚动视图之前向UIImageView添加手势,则不会触发触摸事件.

我想得到一个点击发生的UIImageView.

我已经看到了一些关于从UIScrollView获取触摸点然后根据位置计算UIImageView的答案 - 但这看起来非常混乱和矫枉过正.

有没有一种简单的方法可以从UIScrollView中的对象获取触摸事件?

bll*_*akk 5

为了完整起见.

UIScrollView内部的UIImageView未编程为本机接收触摸事件和手势.

所以你可能想做的是:

  1. 将UITapGestureRecognizer添加到滚动视图以在滚动视图内启用触摸.

>

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];

singleTap.cancelsTouchesInView = NO; 

[myScrollView addGestureRecognizer:singleTap]; 
Run Code Online (Sandbox Code Playgroud)
  1. 使用从UIImageView继承的视图自定义UIImageView.

>

CustomImageView *imageView = [[CustomImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[imageView setUserInteractionEnabled:YES];
[scrollView addSubview:imageView];
Run Code Online (Sandbox Code Playgroud)
  1. 在该自定义子类中提供触摸方法并将其添加到UIScrollView上.

>

@interface CustomImageView:UIImageView {}

@implementation CustomImageView

- (id)initWithFrame:(CGRect)frame{}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}
Run Code Online (Sandbox Code Playgroud)

@结束