我正在实施消息应用程序复制消息功能。
您可以双击或长按消息进行复制。
我该怎么做?
我在考虑为视图添加两个手势识别器,一个UITapGestureRecognizer
(numberOfTapsRequired
设置为2
)和一个UILongPressGestureRecognizer
。他们都有相同的目标和动作。
然后,我想对于他们每个人,我会打电话给requireGestureRecognizerToFail:
,传递另一个手势识别器。
我的想法是否正确?有什么我想念的,或者有更好的方法吗?
答案 0 :(得分:0)
只需将手势添加到视图中(便于以编程方式进行)并将选择器设置为所需的方法。但是,您可能会得到一些推迟,因为您没有提供任何代码或提示您在来这里之前尝试解决问题。我也是新来的,但由于这些原因,已经看到一些问题被搁置。
答案 1 :(得分:0)
正如你所说,双击并长按要复制的信息。所以他们两个都在使用相同的动作。所以我认为你可以用同样的方法做到这一点。
答案 2 :(得分:0)
您可以在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.
}
}