没有显示 uitextview 的 uimenucontroller,通用应用程序 xcode 4

Posted

技术标签:

【中文标题】没有显示 uitextview 的 uimenucontroller,通用应用程序 xcode 4【英文标题】:no uimenucontroller with uitextview showing, universal app xcode 4 【发布时间】:2011-07-06 19:37:49 【问题描述】:

在模拟器上,我看到 UIMenucontroller 没有问题,但它不会出现在运行 ios 4+ 的设备上进行测试。它是使用 IB 添加的标准 uitextview。

我已将这些方法添加到作为委托的视图控制器中,但我认为它们不是必需的,因为我想要标准的菜单控制器、选择、复制等。更不用说它们没有被调用。

感谢您的帮助

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 

    NSLog(@"Can perform action called");

    BOOL answer = NO;

    if (action == @selector(copy:))
    
        answer = YES;
    
    if (action == @selector(cut:))
    
        answer = YES;     
    
    if (action == @selector(paste:))
    
        answer = YES;
    
    if (action == @selector(select:))
    
        answer = YES;
    
   if (action == @selector(selectAll:))
    
        answer = YES;
    

    return answer;


- (BOOL) canBecomeFirstResponder 
    NSLog(@"can become first called");
    return YES;

【问题讨论】:

【参考方案1】:

你需要添加一个手势识别器,或者重写 touchesEnded:withEvent: 方法,并显示菜单控制器:

//Assumes you assigned a CGRect for where the menu should appear to theRect
UIMenuController *mc = [UIMenuController sharedMenuController];
[mc setTargetRect:theRect inView:self];
[mc setMenuVisible:YES animated:YES];

你还should override the methods -copy,-cut,-paste 等等。

【讨论】:

即使是为了获得标准的选择、复制、粘贴也必须这样做?我以为是非标准菜单。顺便说一句,我可以在模拟器中看到它们,只是在设备上看不到。 我可能弄错了——我离开了我的 Mac,但现在我意识到,由于我的应用程序使用 Core Text,我可能需要该代码,而您的可能不需要。由于文档强烈建议覆盖标准的剪切/复制/粘贴方法,您可以尝试看看它是否能解决问题。 如果有机会请告诉我,我的印象是标准的复制/粘贴总是以 uitextview 出现,但这不是我看到的行为。

以上是关于没有显示 uitextview 的 uimenucontroller,通用应用程序 xcode 4的主要内容,如果未能解决你的问题,请参考以下文章

没有显示 uitextview 的 uimenucontroller,通用应用程序 xcode 4

有没有办法在不开始滚动的情况下显示 UITextView 的滚动指示器?

光标未显示在 UITextView

UITextView 限制字符并显示剩余计数

iOS 8.1仅间歇性地显示UITextView

在 UITextView 中显示带有超大首字母的文本块