0

我有一个PageControl并且每个页面(ViewController)具有不同数量的imageviewsUIImageView),它们是动态创建的。在iPad应用程序中为UIImageView禁用手势识别器

每个imageview被分配一个gesture recognizer (tapped or move)。由于这些位于PageControl之内,因此我想启用/禁用gesture recognizer,这样它就不会干扰页面事件的swipe

我知道有一个removeGestureRecognizer方法,但我不想每次都删除并附加该方法。有没有相当于只启用和禁用?

感谢

回答

3

您可以使用启用或类似UIGestureRecognizer的禁止性:

swipeGestureRecognizer.enabled = NO; 

,或者您可以使用手势识别方法的返回如果你不想触摸

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

谢谢你们两位。这两个答案都是正确的,但由于我是动态创建它们(不通过接口),我接受这个答案,但最好知道UI的答案以备将来参考。 – 2013-03-27 04:33:19

1

您可以禁用userInteractionEnabledUIImageView?你能做到这一点在Interface Builder如果你正在做这样的说法,或者你可以编程设定这个像这样 - imageView.userInteractionEnabled = NO;希望这有助于...

enter image description here

+0

大,你可以像

imageView.userIntractionEnabled = NO; 

。感谢您的解释和图片。即使我在代码中全部动态执行,这也是一个很好的参考。 – 2013-03-27 04:34:04

+0

很酷。很难在DEV的GUI中构建所有的东西。无论如何,你可以直接从代码中禁用'userInteraction'。 'imageView.userInteractionEnabled = NO;'这有帮助吗? – 2013-03-27 04:50:57

2

如果要禁用同时所有的手势,如果要禁用只有一个手势识别,然后

NSArray *gestures = imageView.gestureRecognizers; 
for(UIGestureRecognizer *gesture in gestures) 
{ 
    if([gesture isKindOfClass: [UITapGestureRecognizer class]]) 
    { 
     gesture.enabled = NO; 
    } 
+0

请不要使用点语法来发送非财产信息。 – 2013-03-27 05:38:59

+0

对不起..我的错误:) – Rafeek 2013-03-27 06:14:13

+0

不用担心,谢谢! – 2013-03-27 06:15:02