6
我正在尋找一種方法來觀察UIWebView中文本選擇已經開始或結束的通知。一旦出現引腳和藍色選擇疊加層,它會自動更新Javascript選擇和範圍對象,但是當您敲出選擇並結束時,看起來並沒有乾淨的方式來獲得通知。通知在UIWebView文本選擇確實開始或結束?
我正在尋找一種方法來觀察UIWebView中文本選擇已經開始或結束的通知。一旦出現引腳和藍色選擇疊加層,它會自動更新Javascript選擇和範圍對象,但是當您敲出選擇並結束時,看起來並沒有乾淨的方式來獲得通知。通知在UIWebView文本選擇確實開始或結束?
您可以簡單地鎖定到javascript touchend
事件(或Obj-C中的touchesEnded
)並檢查window.getSelection()
的狀態。還有JavaScript事件selectionchange
。
,我使用的是通過通過子視圖循環檢查的UIWebView的選擇狀態的另一種方法:
- (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;
}
但是你最好的選擇是檢查選擇的狀態,當觸摸結束事件火災或選擇更改事件火災。
謝謝你給這個鏡頭。 – HalR