当前位置:   MFC > 正文

一个接一个地显示UIMenuController的问题

iphone,sdk,uimenucontroller,ipad,webview,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我正在使用UIMenuController的新自定义功能将"复制"以外的内容添加到菜单中以便剪切并粘贴到webview中.

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

相反,如果我尝试添加多个项目,那么我会看到[复制|更多],如果我按下MORE而不是最终其他项目将会显示.

可以直接显示[COPY | FOO | BAR | THREE | FOUR]而不是?我看到了一些能够做到这一点的应用程序,尤其是iBooks.

任何非常有帮助的帮助,谢谢.

干杯,sissensio



1> TomSwift..:

fluXa的答案实际上是正确的,但我不认为它非常清楚.

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

但是,如果菜单中不包含任何内置系统菜单项(复制:,粘贴:等),初始菜单显示将显示所有自定义菜单项,而不显示"更多..."项.

如果需要包含内置系统项,只需添加具有相同标题但具有不同选择器的自定义UIMenuItem.(myCopy:与副本:)

从本质上讲,它归结为不调用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;
}

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/blog/MFC/detail/22014
推荐阅读
相关标签
  

闽ICP备14008679号