美文网首页ios基础
UIWebView(UITextView)中长按出现文本选取框

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

作者: 我想哟 | 来源:发表于2017-05-18 09:47 被阅读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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/bbzjxxtx.html