显示 UIMenuController 时获取选定的文本

Posted

技术标签:

【中文标题】显示 UIMenuController 时获取选定的文本【英文标题】:Getting selected text when UIMenuController is shown 【发布时间】:2011-01-19 13:23:56 【问题描述】:

当用户在 UITextView 或 UIWebView 中选择一些文本时,会显示 UIMenuController。有没有办法以编程方式访问这个选定的文本?

我需要它,因为我想将自定义项添加到 UIMenuController: 'Search' 选项,用于搜索数据库中的选定文本。

是否可以不使用“复制”项将文本复制到粘贴板,然后下次从 UIPasteBoard 获取? - 我对这种解决方法不感兴趣。

【问题讨论】:

【参考方案1】:

我所做的是将此方法添加到 UIWebView 的类别中:

- (NSString *)selectedText 
    return [self stringByEvaluatingjavascriptFromString:@"window.getSelection().toString()"];

之后,我可以使用[webView selectedText] 访问当前选择。

【讨论】:

【参考方案2】:

你有没有看过 Apple 的文档。你可以使用提供的 MenuItems 属性来创建你的自定义 UIMenuController。看看下面的图片

并关注this

链接了解详情。

您还可以查看 Apple 提供的示例代码以了解该功能。

http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010139

在这个示例代码中,他们在 UIMenuController 中显示了“电子邮件”。

所以继续编写代码...一切顺利...

干杯

【讨论】:

我知道如何将自定义菜单项添加到 UIMenuController,但不知道如何访问选定的文本。我不够精确。不过,感谢您的回复。【参考方案3】:

要从 UIWebView 中显示的 PDF 中获取文本,这将起作用

 -(void)copiedString

    [[UIApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self forEvent:nil];
    NSString *copiedString =  [UIPasteboard generalPasteboard].string;
    NSLog(@"Copied String: %@",copiedString);

【讨论】:

以上是关于显示 UIMenuController 时获取选定的文本的主要内容,如果未能解决你的问题,请参考以下文章

UIMenuController 和 UITextView 选定的文本

如何获取 UIWebView 中选定文本的坐标(CGRect)?

使用 uimenucontroller 时遇到问题

iPhone SDK:UIMenuController 在选定的 UITableCell 上方弹出

UIMenuController 显示错误的项目

UIMenuController 响应很慢