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。还设置delegatedbpan.delegate=self设置和添加UIPangestureRecognitizer
时进行编码>
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。还设置delegatedbpan.delegate=self设置和添加UIPangestureRecognitizer
时进行编码>
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更新代码吗?