iOS:两个手势,一个目标动作

时间:2013-10-27 05:08:45

标签: ios uigesturerecognizer messages uitapgesturerecognizer long-press

我正在实施消息应用程序复制消息功能。

您可以双击或长按消息进行复制。

我该怎么做?

我在考虑为视图添加两个手势识别器,一个UITapGestureRecognizernumberOfTapsRequired设置为2)和一个UILongPressGestureRecognizer。他们都有相同的目标和动作。

然后,我想对于他们每个人,我会打电话给requireGestureRecognizerToFail:,传递另一个手势识别器。

我的想法是否正确?有什么我想念的,或者有更好的方法吗?

4 个答案:

答案 0 :(得分:0)

只需将手势添加到视图中(便于以编程方式进行)并将选择器设置为所需的方法。但是,您可能会得到一些推迟,因为您没有提供任何代码或提示您在来这里之前尝试解决问题。我也是新来的,但由于这些原因,已经看到一些问题被搁置。

答案 1 :(得分:0)

正如你所说,双击并长按要复制的信息。所以他们两个都在使用相同的动作。所以我认为你可以用同样的方法做到这一点。

答案 2 :(得分:0)

您可以在UIGestureRecognizerDelegate

中尝试此方法

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

请参考以获取更多详细信息: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizerDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIGestureRecognizerDelegate/gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer

这有助于一次识别多个手势识别器。

答案 3 :(得分:0)

是的,如您所说,创建两个手势识别器(一个长按和一个双击)并将它们添加到同一视图。

请勿在其中任何一个上致电requireGestureRecognizerToFail:,因为长按&默认情况下,双击手势可以很好地协同工作。

您可以为它们提供相同的目标和操作,但每个手势都需要不同的逻辑来确定是否应显示复制菜单。

- (void)messageCopyMenuShowAction:(UILongPressGestureRecognizer *)gestureRecognizer
{
    BOOL doubleTap = (gestureRecognizer.numberOfTapsRequired == 2);
    if ((doubleTap && gestureRecognizer.state == UIGestureRecognizerStateEnded) ||  // double-tap
        (!doubleTap && gestureRecognizer.state == UIGestureRecognizerStateBegan)) { // long-press
        // Show copy menu.
    }
}