【发布时间】:2015-11-18 22:33:07
【问题描述】:
在我的视图控制器中,我有一个WKWebView,我使用一个UITapGestureRecognizer 来检测 web 视图上的点击,以便显示/隐藏导航和状态栏。我还使用 taps+javascript 来检测网页内容的特殊部分何时被点击。
WKWebView 使用长按来允许用户选择文本。
超长按效果很好。网页内容按预期被WKWebView选中,生活不错。
我的问题是当用户应用“较短”的长按时,因为 UITapGestureRecognizer 将它们识别为点击。 WKWebView 选择文本,所以看起来用户按下了足够长的时间,但是在释放时,UITapGestureRecognizer 会触发指定的操作,并且我的代码来显示/隐藏导航栏。
我想要的是仅在用户应用非常短的点击时显示/隐藏导航栏。如果他们触摸足够长的时间让 WKWebView 选择文本,我想让 WKWebView 处理它。
我希望按触摸持续时间过滤点击,但我无法找到确定此信息的方法。
我错过了什么吗?我可以使用 UITapGestureRecognizer 实现这一点还是需要其他方法?
我的目标是 iOS 8 和 9。
【问题讨论】:
-
也许您可以利用
UITouch属性timestamp。然后您可以检查- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;和- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;之间的时间差并采取相应措施。 -
谢谢@BenJammin。我刚刚阅读了
UIResponder并将touchesBegan 和touchesEnded 添加到我的WKWebView子类中。不幸的是,他们没有被召唤。我已经使用 NSLog 和断点来验证这一点。有什么想法吗?
标签: ios uikit uigesturerecognizer