2012-03-08 3 views
1

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

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

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

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

Спасибо.

ответ

1

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

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

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

    if ([resultStr isEqualToString:@"true"]) { 
     return NO; 
    } 
    else { 
     return YES; 
    } 
} 
6

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

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

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

1

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

Смежные вопросы