2011-10-24 34 views
0

我有一个观点,我想使用户选项卡UIButton后它来画,我已经做到这一点使用UIPanGestureRecognizer,加UIPanGestureRecognizer这一观点后UIButton联系,但问题是我完成绘图后如何删除此UIPanGestureRecognizer并重新触摸UIButton删除UIPanGestureRecognizer之后添加它来查看

回答

2

的UIView有一个名为

- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 

或者方法,你可以通过使用方法

- (void)removeTarget:(id)target action:(SEL)action 
+0

但我可以检测到对象是否有识别器? 从哪里可以调用removeTarget? –

+0

您可以通过其gestureRecognizers属性获取与UIView关联的识别器。您可以调用要禁用的UIGestureRecognizer上的remove target。 – jbat100

+0

但如果我有很多识别器,我可以如何从gestureRecognizers中获得特定的识别器? –

0
UIPanGestureRecognizer gestureRecognizer.cancelsTouchesInView = NO; 
0

如果您有多个平移手势识别删除其回调暂时禁用UIGestureRecognizer查看,您可以用关联的对象标记特定的一个。

What is objc_setAssociatedObject() and in what cases should it be used?

因此,在您.m文件的顶部,你就会把

static char overviewKey; 

然后你把你的UIPanGestureRecognizer来查看权限之前,你有一个字符串标记它。

objc_setAssociatedObject(panGesture, &overviewKey, @"pan gesture for drawing", OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

[someView addGestureRecognizer:panGesture]; 

当你要删除的UIPanGestureRecognizer,你会去通过所有的手势识别在该视图中,找到一个用字符串,并将其删除。

for (UIGestureRecognizer *gesture in someView) { 

    NSString *gestureTag= objc_getAssociatedObject(gesture, &overviewKey); 


    if (gestureTag==nil) { 

    continue; 

    } 

    if ([gestureTag isEqual:@"pan gesture for drawing"]) { 

    [ someView removeGestureRecognizer:gesture ]; 

    } 
} 
相关问题