在UIButtons上禁用UIPanGestureRecognizer

XOX*_*OXO 1 objective-c uibutton ios uipangesturerecognizer

我添加了一个UIPanGestureRecognizerUIView,问题是当你在标签UIButton内的S UIPanGestureRecognizer仍处于启用状态.如何禁用UIPanGestureRecognizer按钮?

Bar*_*a R 6

您需要拥有手势识别器的委托(代表参考).例如,您的视图控制器可以是符合协议UIGestureRecognizerDelegate的委托.这样你就可以使用这个方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
Run Code Online (Sandbox Code Playgroud)

在您的委托中,以避免在特定视图中识别手势.

您可以通过以下方式创建手势并将其分配给某个视图(ARC假设):

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(someMethodName:)];
panGesture.delegate = self;

UIView *someView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
[someView addGestureRecognizer:panGesture];
Run Code Online (Sandbox Code Playgroud)

在这里,您可以获得有关如何处理手势以及避免在您感兴趣的某些视图上收到手势的更多详细信息:

iOS的事件处理指南

基本上你需要做以下的事情来防止按钮上的手势:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
 if ([touch view] == self.myButton){
    return NO;
 }

 return YES;
}
Run Code Online (Sandbox Code Playgroud)

返回NO导致手势失败并允许其他视图继续处理触摸.

您还可以检查[触摸视图]是否类似于UIButton,使其更加通用并避免与所有按钮进行比较.