如何显示自定义弹出窗口而不是UIMenuController

时间:2013-07-02 11:41:41

标签: iphone ios uimenucontroller

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

enter image description here

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

enter image description here

我该怎么做?

更新

UIMenuController打开时,将调用哪种方法?

1 个答案:

答案 0 :(得分:0)

检查此question的已接受答案。

您可以继承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