【发布时间】:2010-11-14 23:44:00
【问题描述】:
我正在编写一个 iPad 应用程序,其中我在 UIViewController 中大量使用了 UIWebView。
我正在绑定一些动作来滑动手势识别器。他们检测左右滑动。由于我的 web 视图上下滚动,因此很容易尝试水平滑动并让 webview 向上或向下滚动一点,最终导致手势识别器失败。
那么有什么办法可以避免这种行为呢?也许是为了检测水平滑动的开始并锁定 UIWebView 垂直位置?
谢谢!
【问题讨论】:
我正在编写一个 iPad 应用程序,其中我在 UIViewController 中大量使用了 UIWebView。
我正在绑定一些动作来滑动手势识别器。他们检测左右滑动。由于我的 web 视图上下滚动,因此很容易尝试水平滑动并让 webview 向上或向下滚动一点,最终导致手势识别器失败。
那么有什么办法可以避免这种行为呢?也许是为了检测水平滑动的开始并锁定 UIWebView 垂直位置?
谢谢!
【问题讨论】:
您可以拦截 continueTrackingWithTouch:withEvent 调用并有选择地返回 NO - 甚至可能取消滑动。
例如像
(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
if (... too diagonal to my taste) ..
return (NO);
return [super continueTrackingWithTouch:touch withEvent:event];
}
“太对角线”可以像检查开始点和当前点是否过于非正交一样简单(例如 dx = firstX - lastX, dy = firstY - lastY; len2 = dx * dx + dy * dy -仅允许相对于面积 = dx * dy 的某个比率。
谢谢,
Dw.
【讨论】: