Ios 删除UIButton的手势

Ios 删除UIButton的手势,ios,objective-c,uibutton,uigesturerecognizer,uipangesturerecognizer,Ios,Objective C,Uibutton,Uigesturerecognizer,Uipangesturerecognizer,我正在使用uigesturecognizer进行平移、旋转和挤压。但我要申请的是全视图。我需要删除按钮的手势,而不是子视图。但当我使用“平移”按钮时,也会产生影响。如何限制按钮从self.view移动。我使用以下代码作为UIPangestureRecognitor UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self

我正在使用
uigesturecognizer
进行平移、旋转和挤压。但我要申请的是全视图。我需要删除按钮的手势,而不是子视图。但当我使用“平移”按钮时,也会产生影响。如何限制按钮从self.view移动。我使用以下代码作为
UIPangestureRecognitor

UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                        action:@selector(ondbPan:)];

[self.view addGestureRecognizer:dbpan];

[closeButton removeGestureRecognizer:dbpan];
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
      if ([touch.view isKindOfClass:[UIButton class]])
      {
           return FALSE;
      }
      else
      {

         return TRUE;
      }
}
潘:


尝试使用下面的代码,如果子视图是类UIButton类,则
UIgestureRecognitizer
的委托返回FALSE。还设置delegate
dbpan.delegate=selfUIPangestureRecognitizer
时进行编码>

UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                        action:@selector(ondbPan:)];

[self.view addGestureRecognizer:dbpan];

[closeButton removeGestureRecognizer:dbpan];
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
      if ([touch.view isKindOfClass:[UIButton class]])
      {
           return FALSE;
      }
      else
      {

         return TRUE;
      }
}
更新:-

我不知道为什么在你这方面不起作用,我测试了这个,并使用以下代码创建了一个演示:-

.h文件

@interface myviewcontroller : UIViewController<UIGestureRecognizerDelegate>
它的输出是


尝试使用下面的代码,如果子视图是类UIButton类,则
UIgestureRecognitizer
的委托返回FALSE。还设置delegate
dbpan.delegate=selfUIPangestureRecognitizer
时进行编码>

UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                        action:@selector(ondbPan:)];

[self.view addGestureRecognizer:dbpan];

[closeButton removeGestureRecognizer:dbpan];
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
      if ([touch.view isKindOfClass:[UIButton class]])
      {
           return FALSE;
      }
      else
      {

         return TRUE;
      }
}
更新:-

我不知道为什么在你这方面不起作用,我测试了这个,并使用以下代码创建了一个演示:-

.h文件

@interface myviewcontroller : UIViewController<UIGestureRecognizerDelegate>
它的输出是

试试这个

while (closeButton.gestureRecognizers.count) {
    [closeButton removeGestureRecognizer:[closeButton.gestureRecognizers objectAtIndex:0]];
}
试试这个

while (closeButton.gestureRecognizers.count) {
    [closeButton removeGestureRecognizer:[closeButton.gestureRecognizers objectAtIndex:0]];
}

在Swift上:

func手势识别器(手势识别器:UIGestureRecognitor,应接收触摸:UITouch)->Bool{

if (touch.view!.isKindOfClass(UIButton)) {
    return false
}
return true
}

注意:确保添加了UIgestureRecognitizerDelegate,并在viewDidLoad()上点击手势.delegate=self。

在Swift上:

func手势识别器(手势识别器:UIGestureRecognitor,应接收触摸:UITouch)->Bool{

if (touch.view!.isKindOfClass(UIButton)) {
    return false
}
return true
}

注意:确保添加了UIGestureRecognitizerDelegate,并在viewDidLoad()上点击手势。delegate=self。它对我无效。你能检查我的Pan更新代码吗?它对我无效。你能检查我的Pan更新代码吗?