如何在单视图中添加两个 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 在单页路由中使用来自同一控制器的两个功能

如何像这样创建 iOS 表格视图?

iOS UIRefreshControl 在单视图应用程序中,没有表

如何在横向模式下添加两个视图或图像视图?