0

Я реализую функцию сообщения-сообщения для сообщений.iOS: два жесты, одно целевое действие

Вы можете либо дважды нажать, либо нажать на сообщение, чтобы скопировать его.

Как это сделать?

Я думал о добавлении двух жестов распознавателей к мнению, один UITapGestureRecognizernumberOfTapsRequired набором для 2) и один UILongPressGestureRecognizer. Они оба имели бы ту же цель & action.

Тогда, я думаю, для каждого из них я бы позвонил requireGestureRecognizerToFail:, передав другой распознаватель жестов.

Я считаю, что это правильно? Есть ли что-то, что мне не хватает, или есть лучший способ сделать это?

ответ

0

Просто добавьте жесты к вашему виду (легко сделать программно) и установите селектор на желаемый метод. Тем не менее, вы, вероятно, собираетесь немного отбросить назад, так как вы не предоставляете никакого кода или намека на то, что вы пытались решить вашу проблему, прежде чем приходить сюда. Я тоже здесь новичок, но некоторые причины были приостановлены по этим причинам.

0

Как вы сказали, для двойного нажатия и длительного нажатия на сообщение для копирования. Таким образом, оба они используют для одного и того же действия. Поэтому я думаю, что вы можете сделать это по тому же методу.

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:

это помогает распознать более чем один жест распознаватель в то время.

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. 
    } 
} 
Смежные вопросы