2

我正在创建一个UITextView包含大量文本的应用程序。当我双击任何文本而不是其默认行为时,会发生并显示UIMenuController。像这样,

在此处输入图像描述

但我想显示自定义弹出窗口而不是UIMenuController这样,

在此处输入图像描述

我怎样才能做到这一点?

更新

打开时会调用哪个方法UIMenuController

4

1 回答 1

0

检查此问题的已接受答案。

您可以继承 UITextField 并覆盖以下方法以禁用您想要的任何操作:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{
    if (action == @selector(paste:))
    {
        return NO;
    }
    else if (action == @selector(cut:))
    {
        return NO; 
    }
    else if (action == @selector(copy:))
    {
        return NO;
    }
     ... //etc etc

    return [super canPerformAction:action withSender:sender];
}

并使用以下代码显示您自己的:

UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setTargetRect:textField.frame inView:textField.superview];
[menu setMenuItems:[NSArray arrayWithObjects:
                            [[UIMenuItem alloc] initWithTitle:@"Test" action:@selector(test)],
                            nil]];
[menu setMenuVisible:YES animated:YES];

并且在canPeformAction:withSender:方法中您可以返回YES选择器Test

于 2013-07-02T14:32:15.947 回答