我有一个UIScrollview,里面有UIImageView。
如果我在添加到滚动视图之前向UIImageView添加手势,则不会触发触摸事件。
我想让UIImageView在点击时出现。
我已经看到了一些有关从UIScrollView获取触摸点然后根据位置计算UIImageView的答案 - 但这看起来非常混乱和过度杀伤。
是否有一种简单的方法可以从UIScrollView中的对象获取触摸事件?
答案 0 :(得分:5)
为了完整起见。
UIScrollView内部的UIImageView未编程为本机接收触摸事件和手势。
所以你可能想做的是:
>
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
singleTap.cancelsTouchesInView = NO;
[myScrollView addGestureRecognizer:singleTap];
>
CustomImageView *imageView = [[CustomImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[imageView setUserInteractionEnabled:YES];
[scrollView addSubview:imageView];
>
@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 {}
@end
答案 1 :(得分:1)
您的UIImageView
可能禁用了用户互动(这是他们默认使用的)。在每个图像视图上调用以下行,并且应该识别您的点击:
yourImageView.userInteractionEnabled = YES;
请务必执行此操作before adding the gesture recognizer。
几个星期前我就遇到了这个问题,这就是为我解决的问题。