2011-03-19 84 views
13

我试图在imageView中使用一个水龙头识别器(也是一个scrollView子项)。 在界面生成器中,我创建并仅指定了scrollView。 工作滚动,但单击事件不被识别(没有记录)。 下面的代码:在UIScrollView子视图中的UITapGestureRecognizer

- (void)loadView { 
[super loadView]; 

UIImage *myImage = [UIImage imageNamed:@"img1.jpg"]; 
imageView = [[UIImageView alloc] initWithImage:myImage]; 

[myImage release]; 

// add gesture recognizers to the image view 
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 

[imageView addGestureRecognizer:singleTap]; 

[singleTap release]; 

[imageScrollView setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)]; 

[imageScrollView addSubview:imageView]; } 

- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer { 
// single tap handling 
NSLog(@"sinlgeTap called"); } 

我环顾四周,几个小时,试了很多东西。也许别人的表情可以帮助更多。 谢谢。

+1

为imageView启用userInteraction,将激发singleTap ...但滚动将不再起作用。 – brainondev 2011-03-19 20:09:21

+2

有没有什么办法让滚动功能​​和手势识别器一起工作? – 2011-08-22 22:24:13

回答

31

我已启用的ImageView的用户交互,也为滚动视图的canCancelContentTouches选项:

[imageScrollView setCanCancelContentTouches:YES]; 
[imageView setUserInteractionEnabled:YES]; 

它现在。

+1

为什么你必须去[imageScrollView setCanCancelContentTouches:YES]?同样在你的情况下,你有一个图像,如果有多个图像,你有什么代码处理SingleTap,以确定点击事件发生在哪个图像 – Yogesh 2011-03-21 20:38:03

+1

UIGestureRecognizer作为一个属性查看。所以你可以做一些像UIImageView * thisView = UIGestureRecognizer.view,你可能也可以投UIImageView,不知道这是否是必要的UIImageView * thisView =(UIImageView *)UIGestureRecognizer.view – PruitIgoe 2012-12-21 18:10:58

+0

是的每个@Yogesh,你只需要要使用[imageView setUserInteractionEnabled:YES]来运作。 – JimmyJammed 2017-08-23 23:05:18