【发布时间】:2012-10-30 19:06:51
【问题描述】:
我正在寻找一种方法来观察 UIWebView 中文本选择已经开始或结束的通知。一旦图钉和蓝色选择覆盖出现,它会自动更新 Javascript 选择和范围对象,但是当您点击选择并结束时,似乎没有一种干净的方式来获得通知。
【问题讨论】:
我正在寻找一种方法来观察 UIWebView 中文本选择已经开始或结束的通知。一旦图钉和蓝色选择覆盖出现,它会自动更新 Javascript 选择和范围对象,但是当您点击选择并结束时,似乎没有一种干净的方式来获得通知。
【问题讨论】:
您可以简单地锁定 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;
}
但您最好的选择是在触发触摸结束事件或触发选择更改事件时检查选择状态。
【讨论】: