在iOS中,如何禁止工具栏中的手势识别?
“我的视图”有一个带有两个按钮的工具栏,类型为在iOS中,如何禁止工具栏中的手势识别?,ios,uitoolbar,uigesturerecognizer,Ios,Uitoolbar,Uigesturerecognizer,“我的视图”有一个带有两个按钮的工具栏,类型为UIBarButtonItem。我正在尝试实现一个手势识别器,这样当我点击视图中除工具栏外的任何位置时,我就会调用选择器。点击工具栏中的条形按钮项应调用该按钮的操作方法。视图符合UIgestureRecognitizerDelegate协议,并实现shouldReceiveTouch方法,如下所示: -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
UIBarButtonItem
。我正在尝试实现一个手势识别器,这样当我点击视图中除工具栏外的任何位置时,我就会调用选择器。点击工具栏中的条形按钮项应调用该按钮的操作方法。视图符合UIgestureRecognitizerDelegate
协议,并实现shouldReceiveTouch
方法,如下所示:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *) touch {
// Disallow recognition of tap gestures in the toolbar
if ((touch.view == self.sideOneBarButton.customView) &&
(gestureRecognizer == self.tapRecognizer)) {
return NO;
}
return YES;
}
问题是,当我点击工具栏按钮时,touch.view
的类型是uttoolbertextbutton*
,这是一个未记录的类,因此我的if语句失败,shouldReceiveTouch
总是返回YES,我的按钮事件永远不会被调用
理想情况下,我想说:如果触摸在工具栏中的任何位置,则返回否。执行此操作的最佳方法是什么?有一种方法可以忽略任何非中心视图上的手势 例如,我有:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
将手势委托添加到类:
@interface myClass : UIViewController<..,UIGestureRecognizerDelegate,..>
当我因为这个手势而无法使用UIToolbar时,这对我来说是可行的
此外,正如@LandedGently所提到的,这里有更多信息:
因此,人们不会错过评论中的链接。有一种方法可以忽略任何不是你中心视图的东西上的手势 例如,我有:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
将手势委托添加到类:
@interface myClass : UIViewController<..,UIGestureRecognizerDelegate,..>
当我因为这个手势而无法使用UIToolbar时,这对我来说是可行的
此外,正如@LandedGently所提到的,这里有更多信息:
因此,人们不会错过评论中的链接。关于委派功能,这对我很好
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view.superview isKindOfClass:[UIToolbar class]]) {
return NO;
}
return YES;
}
关于委托函数,这对我有好处
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view.superview isKindOfClass:[UIToolbar class]]) {
return NO;
}
return YES;
}
我刚刚发现了我想要的答案。谢谢请在您的问题的自述答案中添加该链接,并尽快接受该链接,以防止出现没有答案的问题。我刚刚发现哪个有我想要的答案。谢谢请在您的问题的自述答案中添加该链接,并尽快接受该链接,以防止出现没有答案的问题。