Szukam sposobu na obserwowanie powiadomień w UIWebView, że zaznaczenie tekstu zostało rozpoczęte lub zakończone. Po pojawieniu się pinezek i niebieskiej nakładki zaznaczenia automatycznie aktualizuje obiekty zaznaczania i wybierania JavaScript, ale po wybraniu i zakończeniu, wydaje się, że nie ma czystej metody otrzymywania powiadomień.Powiadomienia w usłudze UIWebView o rozpoczęciu lub zakończeniu wyboru tekstu?
6
A
Odpowiedz
1
Możesz po prostu włączyć się do zdarzenia javascript touchend
(lub touchesEnded
w Obj-C) i sprawdzić status window.getSelection()
. Istnieje również zdarzenie javascript selectionchange
.
Inną metodą, że używam jest sprawdzenie statusu WYBORU UIWebView za pośrednictwem przelotowego subviews:
- (bool) selectionInWebView:(UIWebView*)webView {
UIScrollView *scrollView = webView.scrollView; //assumes IO(6)? and scrollView is exposed. Loop subviews otherwise.
UIView *browserView;
for(int i = 0; scrollView.subviews.count; i++){
if([NSStringFromClass([scrollView.subviews[i] class]) isEqualToString:@"UIWebBrowserView"]){
browserView = scrollView.subviews[i]; break;
}
}
if(browserView == nil) return false;
for(int i = 0; browserView.subviews.count; i++){
if([NSStringFromClass([browserView.subviews[i] class]) isEqualToString:@"UIWebSelectionView"]){
//UIView *selectionView = browserView.subviews[i];
return true; //selection view exists, a selection is in progress
}
}
return false;
}
Ale najlepszym rozwiązaniem jest sprawdzenie stanu selekcji gdy zdarzenie ogień zdarzenia końcowe dotykowy lub zmienić wybór pożary.
Dzięki za oddanie tego strzału. – HalR