ios - 在 subview Controller 上禁用点击手势?如何判断是PanGesture还是TapGesture?

标签 ios objective-c xcode cocoa-touch uigesturerecognizer

全部。

在我的 iOS 8.0 应用中。

在父 subview 架构中。通过这段代码...

[self addChildViewController:slideTableViewController];
[self.view addSubview:slideTableViewController.view];
[slideTableViewController didMoveToParentViewController:self];

我已经在基本 View Controller 上实现了 TapGesturerecognizer 和 PanGesturerecognizer。

因此,它可以识别平移(拖动)和点击。我的 BaseView 需要这两种手势。

只是不想在 SlideView 上点击手势。 因为我想在 subview 上执行 didSelectRowAtIndexpath 方法,

解决方案:

问题 1 的答案: 许多 StackOverflow 答案具有相同的基础...... 当您的触摸遇到 subview 时禁用点击手势。

if([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]){
                if(CGRectContainsPoint(slideTableViewController.view.frame,[touch locationInView:self.view])){
                    return NO;
     }
}

问题 2 的答案:

如何判断是PanGesture还是TapGesture?

委托(delegate)方法将调用每个手势类型

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

如果您在 View 中实现了两种手势,平移手势和触摸手势,

此方法将调用 2 次,1 次用于平移手势,1 次用于点击手势。

所以,在这个方法中你可以像 isKindOfClass 方法一样检查。

非常感谢您的帮助......

enter image description here

最佳答案

只需设置 tapGesture.cancelsTouchesInView = YES;

关于ios - 在 subview Controller 上禁用点击手势?如何判断是PanGesture还是TapGesture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131808/

相关文章:

ios - 非圆形发光的 CGContextDrawRadialGradient

ios - 苹果支付 Stripe : Using apple pay certificate not able build

objective-c - 看似简单的 UINavigationController 问题,navigationItem 显示不正确

c++ - Cocoa 和 Objective-C++

iphone - 在没有 Xcode 的情况下创建 iPhone 应用程序

ios - 根据选定的事件共享不同的内容 - UIActivityController

iphone - 你如何只在 UIView 的填充之外显示阴影?

ios - Titanium - iOS 后台服务不工作

ios - 从实时音频流创建 NSData

ios - 更新到 Swift 1.2 后出错