iphone - 接连显示 UIMenuController 的问题

标签 iphone ipad sdk uimenucontroller

我正在使用 UIMenuController 的新自定义功能将“复制”以外的内容添加到菜单中,以便剪切并粘贴到 Web View 中。

我所做的就是获取对共享 UIMenuController 的引用,将 UIMenuItems 的 NSArray 设置到 menuItems 中,只要添加一个项目,一切都可以正常工作。例如,我看到 [COPY|FOOBAR]。

相反,如果我尝试添加多个项目,会发生什么情况,我会看到 [COPY|MORE],如果我按下 MORE 按钮,最终其他项目就会显示出来。

可以直接显示[COPY|FOO|BAR|THREE|FOUR]吗?我看到一些应用程序可以做到这一点,特别是 iBooks。

非常感谢任何帮助,谢谢。

干杯, 西森西奥

最佳答案

fluXa的答案实际上是正确的,但我认为不是很清楚。

问题是,当将自定义 UIMenuItem 对象添加到共享菜单 Controller ([UIMenuController sharedMenuController]) 时,只有第一个自定义 UIMenuItem 将显示在菜单的初始显示上。如果用户点击“更多...”,将显示剩余的自定义菜单项。

但是,如果菜单不包含任何内置系统菜单项(复制:、粘贴:等),则初始菜单显示将显示所有自定义菜单项,并且不会显示“更多...”项目。

如果您需要包含内置系统项目,只需添加具有相同标题但具有不同选择器的自定义 UIMenuItems 即可。 ( myCopy: 与 copy: )

本质上,它归结为不调用 canPerformAction:withSender: 的默认实现,显式处理所有自定义菜单项,并为所有其他(系统提供的)菜单项返回 NO:

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
    if ( action == @selector( onCommand1: ) )
    {
        // logic for showing/hiding command1
        BOOL show = ...;
        return show;
    }

    if ( action == @selector( onCommand2: ) )
    {
        // logic for showing/hiding command2
        BOOL show = ...;
        return show;
    }

    if ( action == @selector( onCopy: ) )
    {
        // always show our custom "copy" command
        return YES;
    }   

    return NO;
}

关于iphone - 接连显示 UIMenuController 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255070/

相关文章:

iphone - 将图像从一个 View 设置为另一个 xcode 4.4

iphone - UITextField 上的键盘没有被关闭

audio - 在Corona SDK中向后播放声音

android - 部署 SDK Addon 组件

iPhone CSS : media type not working!

iphone - 在 UIAlertview ios 运行时添加确定按钮

objective-c - uisplitviewcontroller 在左 View 中的定位问题

ios - 将文档导入 iPad Excel 的自定义 URL

c# - 使用 Kinect SDK 进行联合跟踪

iphone - 如何在 splitViewController 中的 RootViewController 中将页脚图像添加到 UITableView