У меня очень странная проблема: кратковременная авария с UITextView при двойном нажатии, тогда как тот же код работает с версией iOS10 <. (Это означает, что ниже iOS10 версии нет аварии для пресс жест распознаватель)iOS10 UITextView сбой прикосновений к событию
На самом деле, я добавляю в двойное нажатие и нажмите Журнал жест на основе разрешения. Если у пользователя есть разрешение на комментарий, добавьте жесты в viewDidLoad методов. Комментарий допускается только с двойным краном или длинным нажатием
singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureAction:)];
singleTapGesture.numberOfTapsRequired = 1;
// adding gesture to open window for commenting only when he has writing access
if (canComment) {
longPressgesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureAction:)];
longPressgesture.minimumPressDuration = 0.2;
doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doDoubleTap:)];
doubleTap.numberOfTapsRequired = 2;
}
На одном кране
-(void)singleTapGestureAction:(UITapGestureRecognizer*)tapGestureRecognizer{
if (isSingleTapped) {
isSingleTapped = NO;
return;
}
isSingleTapped = YES;
UITextView *textView = (UITextView *)tapGestureRecognizer.view;
[self.commentView becomeFirstResponder]; // becomeFirstResponder
}
дважды нажмите
-(void)doDoubleTap:(UITapGestureRecognizer*)tapGestureRecognizer
{
UITextView *textView = (UITextView *)tapGestureRecognizer.view;
[self.commentView becomeFirstResponder]; // becomeFirstResponder
// To show the UIMenuController menu
[self setCommentMenuToolTipWithRect:completeRect];
}
Примечание: Я добавляю [самоуправления .commentView становитсяFirstResponder]; на каждом жесте действия
методы UITextView делегат
- (void)textViewDidBeginEditing:(UITextView *)inView
{
[self.commentView becomeFirstResponder];
range=[self.commentView selectedRange];
}
использования:
Когда я дважды нажмите, чтобы выбрать любое слово, затем APP CRASH и UIMenuController не появляется,
но если я добавьте следующую строку приложение не врезаться
- (void)textViewDidChangeSelection:(UITextView *)textView{
[textView resignFirstResponder];
} // app does not crash
и UIMenuController появляется с пунктами меню комментарий, это замечательно. Я был счастлив, что исправил проблему с крушением.
Но есть еще одна проблема, когда я нажимаю на улице, кожевенное меню и выбрать любое слово ОПЯТЬ тогда Он не появляется во второй раз.
Я попробовал все возможные пути, чтобы показать меню для возвращения YES/TRUE, чтобы canBecomeFirstResponder. Я знаю, должен быть вид , который претендует на firstResponder для отображения меню. но как ?
На второй раз прикосновением, даже не вызывая какой-либо метод жест распознавателя
Все детали под заголовком ** USE CASE: ** сбивают с толку. Является ли ваша проблема крахом или подсказкой? Пожалуйста, соответствующим образом обновите свой вопрос и удалите всю несущественную информацию. – lukya
@lukya. Прежде всего, это сбой двойного нажатия на UITextView, но если я добавлю textViewDidChangeSelection, то он не сработает, но тогда всплывающая подсказка не появится –
Это невозможно решить, просто глядя на ваш вопрос. Если возможно, укажите исходный код (через github и т. Д.). – lukya