[英]how to detect when UIWebView starts selecting text?
我有一個UIWebView
,它顯示靜態內容並通過其控制器對各種滑動手勢做出反應。
文本選擇已被禁用,但是現在我正在開發一項新功能,以允許選擇文本並顯示自定義上下文菜單。
現在,我需要能夠檢測到何時選擇了文本,以便可以關閉滑動手勢。
我能想到的唯一方法是在滑動處理程序方法中使用JS檢查是否有選定的文本。 還有其他想法嗎? 有人知道如何做得更好嗎?
謝謝。
當用戶選擇文本時,menuViewController將顯示..您可以通過在viewController上添加通知來檢測到該文本
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuShown) name:UIMenuControllerDidShowMenuNotification object:nil];
檢查菜單隱藏的相同情況。
您可能可以使用“長按手勢識別器”綁定到UIWebView。 您可以將其校准為用戶在選擇文本之前按住文本所需的時間。
我最終使用以下方法使用Rangy庫禁用和啟用了手勢識別器。 效果很好。
- (BOOL) isSelectionActive
{
NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString:
@"rangy.getSelection().isCollapsed"];
NSLog(@"resultStr: %@", resultStr );
if ([resultStr isEqualToString:@"true"]) {
return NO;
}
else {
return YES;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.