как определить, когда UIWebView начинает выделять текст? - PullRequest
1 голос
/ 08 марта 2012

У меня есть UIWebView, который показывает статическое содержимое и реагирует на различные жесты прокрутки через его контроллер.

Выделение текста было отключено, но сейчас я работаю над новой функцией, позволяющей выделять текст и отображать пользовательское контекстное меню.

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

Единственный метод, который я могу придумать, это проверить, есть ли выделенный текст с использованием JS в методах обработчика смахивания. Есть еще идеи? Кто-нибудь знает, как сделать это лучше?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 09 марта 2012

когда пользователь выбирает текст, появится menuViewController. Вы можете определить это, добавив уведомление на viewController

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuShown) name:UIMenuControllerDidShowMenuNotification object:nil];

тот же случай, чтобы обнаружить для меню скрыть.

1 голос
/ 15 марта 2012

В итоге я использовал следующий метод для отключения и включения распознавателей жестов с использованием библиотеки Rangy .Прекрасно работает.

- (BOOL) isSelectionActive
{
    NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString:
                            @"rangy.getSelection().isCollapsed"];

    NSLog(@"resultStr: %@", resultStr );

    if ([resultStr isEqualToString:@"true"]) {
        return NO;
    }
    else {
        return YES;
    }
}
1 голос
/ 10 марта 2012

Возможно, вы сможете использовать «Распознаватель жестов длинного нажатия» для привязки к UIWebView.Вы можете откалибровать его по времени, необходимому пользователю для нажатия и удержания текста до его выделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...