2013-05-07 53 views
1

我将UIImageView作为子视图添加到UIScrollView,然后设置图像。用于UIScrollView上的UIImageView的UITapGestureRecognizer永远不会调用iOS5

我试图使用UITapGestureRecognizer。

UITapGestureRecognizer的选择器永远不会在iOS 5中调用(在iOS 6中它是!)。 尝试了很多变化。这是我的代码:

UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(index*(IMAGE_WIDTH+10), 10.0, IMAGE_WIDTH, IMAGE_HEIGHT)]; 
    [imgView setImageWithURL:[NSURL URLWithString:meal.RecommendedImageURL] placeholderImage:[UIImage imageNamed:@""]]; 
    imgView.layer.cornerRadius = 4; 
    [imgView.layer setMasksToBounds:YES]; 
    [imgView setUserInteractionEnabled:YES]; 
    [imgView setMultipleTouchEnabled:YES]; 

    [scrollView addSubview:imgView]; 

    if (IOS_NEWER_OR_EQUAL_TO_5)  
    { 
     UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
     [imgView addGestureRecognizer:tapGestureRecognizer]; 
     tapGestureRecognizer.numberOfTapsRequired = 1; 
     tapGestureRecognizer.enabled = YES; 
     tapGestureRecognizer.delegate = self; 
     [tapGestureRecognizer setCancelsTouchesInView:NO]; 
    } 

这是我选择它只是叫iOS5中:

​​

除此之外,我试图setCancelsTouchesInView为是在我的UIScrollView,但它不工作无论是。 感谢您的帮助!

+0

仍然没有被调用 – user1526725 2013-05-07 12:19:28

+0

有没有其他手势存在? – Balu 2013-05-07 12:21:54

+0

nope,这是我唯一加入的 – user1526725 2013-05-07 12:22:59

回答

0
try to add Gesture in Scrollview then check iskind of class image view 
     UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [scrollview addGestureRecognizer:tapGestureRecognizer]; 
    tapGestureRecognizer.numberOfTapsRequired = 1; 
    tapGestureRecognizer.enabled = YES; 
    tapGestureRecognizer.delegate = self; 
    [tapGestureRecognizer setCancelsTouchesInView:NO]; 

     - (BOOL)gestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
     // test if our control subview is on-screen 
      if ([touch.view isKindOfClass:[UIImageView class]]) { 
      // we touched a button, slider, or other UIControl 
      return YES; 
      }return NO; 
     } 
+0

当我使用你的代码触摸得到承认也当我滚动的图像,我想叫它只有用户轻拍 – user1526725 2013-05-07 12:32:59

+0

so..try上面的代码但..添加手势在你的imageview [imgView addGestureRecognizer:tapGestureRecognizer]; nd也必须设置委托.h – 2013-05-07 12:38:25

+0

仍然没有... scorllview是一个UITableViewCell的内容视图的子视图,也许它有什么? – user1526725 2013-05-07 12:55:42

0

实施UIGestureRecognizerDelegate &返回默认值的3种方法:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; 
+0

当我使用您的代码触摸得到承认也当我滚动的图像,我想打电话给它只有用户点击 – user1526725 2013-05-07 12:33:55

0

好吧,我解决了这个问题很容易! 问题是将UITapGestureRecognizer的委托设置为self。 当我删除委托=自我,它开始工作:) 感谢您的帮助

相关问题