长按UITextView后添加"全选"选项

Pwn*_*ner 2 cocoa-touch uitextview ios

当我长按标准邮件应用程序中的任何文本时,我会看到"全选"选项.

在此输入图像描述

但是,当我在我自己的UITextView中长按文本时,我没有得到该选项.我该如何添加?

在此输入图像描述

这是我的UITextView的相关代码设置:

self.messageLabel = [[UITextView alloc] init];
self.messageLabel.dataDetectorTypes = UIDataDetectorTypeAll;
self.messageLabel.editable = NO;
self.messageLabel.scrollEnabled = NO;
self.messageLabel.selectable = YES;
self.messageLabel.textContainerInset = UIEdgeInsetsZero;
self.messageLabel.textContainer.lineFragmentPadding = 0.0;
Run Code Online (Sandbox Code Playgroud)

Mid*_* MP 7

这是因为:

self.messageLabel.editable = NO;
Run Code Online (Sandbox Code Playgroud)

因此,为了确定您有三个选择.

选项1

删除该行(或将其设置为YES),它将显示这些选项.


选项2

自定义UIMenuController


选项3

canPerformAction:在您定义的viewController类中实现方法UITextView

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(selectAll:))
    {
        return YES;
    }

    return [super canPerformAction:action withSender:sender];
}
Run Code Online (Sandbox Code Playgroud)

并实现如下selectAll:方法:

- (void)selectAll:(id)sender
{
    [self.messageLabel selectAll:sender];
}
Run Code Online (Sandbox Code Playgroud)

注意:如果你没有实现canPerformAction:那么只是定义selectAll:方法也将工作.