如何在单视图中添加两个 GestureRecgonizer
Posted
技术标签:
【中文标题】如何在单视图中添加两个 GestureRecgonizer【英文标题】:How can I add Two GestureRecgonizer in Single View 【发布时间】:2013-11-07 13:34:46 【问题描述】:我有一个小视图(View Frame Size : 100,0,20,30),我想添加两个手势识别器,一个是 UIPanGestureRecognizer,另一个是我自己的自定义 GesuterRecognizer "CPpinGestureRecognizer"。
-
UIPanGestureRecognizer 用于水平拖动视图。
示例:拖动边界为:(100,0 to 320, 0)
-
CPPinGestureRecgonizer 用于以相同宽度垂直放大视图。
示例:(将视图高度放大到用户拖动视图)
现在的问题是两个手势一起工作,我想检查水平拖动的视图是否意味着 CPPinGestureRecognizer 失败,如果用户垂直拖动意味着 UIPanGestureRecognizer 失败。
我怎样才能做到这一点。
提前致谢。
【问题讨论】:
【参考方案1】:手势识别器可以有一个委托(UIGestureRecognizerDelegate
),这个协议有两种方法:gestureRecognizer:shouldRequireFailureOfGestureRecognizer:和gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer。您可以使用它们来不允许在另一个当前被识别时被识别。
【讨论】:
如何在我自己的自定义 CPPinGestureRecognizer 中实现这个委托。 但这两种方法仅适用于 ios 7 及更高版本,但我的项目使用的是 iOS 5... 我没有意识到这一点。在这种情况下,您可以使用gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
。首先,这可能是一种更好的使用方法。
仍然可以正常工作。我想做一些手势应该失败。以上是关于如何在单视图中添加两个 GestureRecgonizer的主要内容,如果未能解决你的问题,请参考以下文章
在单视图应用程序中添加第二个 UIViewController
如何在 laravel 中使用 get 在单页路由中使用来自同一控制器的两个功能