ios基础

UIWebView(UITextView)中长按出现文本选取框

2017-05-18  本文已影响342人  我想哟

因为最近项目需要,简单看啦一下UIWebView中长按出现文本选取框也就是 UIMenuController控件(基本用不到)如下图


WX20170518-09315.png

话不多说,下面咋们来粘一下代码

这几个是系统带的按钮

cut: 剪切选中文字到剪贴版。
copy: 拷贝/复制选中文字到剪贴版。
select: 当处于文本编辑模式时,选中光标当前位置的一个单词。
selectAll: 选中当前页所有文字。
paste: 粘贴剪贴版中的文本到当前光标位置。
delete: 处于文本编辑模式时,删除选中的文本。(since iOS 3.2)
_promptForReplace: 即为上面Google+图片中显示的“替换为...”菜单,点击之后会给出与当前选中单词相近的其他单词。
_showTextStyleOptions: 处于文本编辑模式时,用于编辑字体风格属性,如粗体/斜体等。
_define: 调用iOS系统内置的英语词典,解释选中的单词。如果内置词典中找不到所选单词,则该项不予显示。
_accessibilitySpeak: 朗读当前选中的文本。
_accessibilityPauseSpeak: 暂停朗读文本。
makeTextWritingDirectionRightToLeft: 调整选中文本的书写格式为从右至左。阿拉伯语会用到。(since iOS 5.0)
makeTextWritingDirectionLeftToRight: 调整选中文本的书写格式为从左至右。(since iOS 5.0)
当然也可以自定义
        UIMenuController *menuController = [UIMenuController sharedMenuController];
        UIMenuItem *menuItem0 = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"我想",nil)action:@selector(item0:)];
        
        NSArray *array = @[menuItem0];
        [menuController setMenuItems:array];
这个方法很重要 需要的按钮 返回 YES 不需要的返回NO
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(item0:)) {
        return YES;
    }
    return  NO;

//    return [super canPerformAction:action withSender:sender];
}
自定义方法的实现 -----(我这里写的是打印出选中的文字)
- (void)item0:(id)sender{
    [self copy:nil];
    UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
    if (pasteBoard.string != nil) {
                NSLog(@"%@", pasteBoard.string);
    }
}

直接调用webview 就会发现 长按出现的按钮 变成自己自定义的按钮。

ps:UITextView 也是如此 把 UITextView的键盘响应去掉 textview.editable=NO; ,直接调用 TextView

WX20170518-10055.png
上一篇下一篇

猜你喜欢

热点阅读