Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UIMenuController出现之前更改其标签标题_Ios_Swift_Uimenucontroller - Fatal编程技术网

Ios 在UIMenuController出现之前更改其标签标题

Ios 在UIMenuController出现之前更改其标签标题,ios,swift,uimenucontroller,Ios,Swift,Uimenucontroller,当UIMenuController使用的UIMenuItem即将弹出时,是否可以更改其标题 例如,当我在覆盖功能执行(操作:选择器,带sender sender:AnyObject?->Bool)中允许复制菜单时,它将显示标签副本和我想要复制的文本,如:“复制文本\u I\u关于\u到\u复制” 我曾想过制作一个自定义UIMenuItem,但当我创建它时,我必须为标题提供文本。有可能在文本出现之前更改它吗?我找到了一种方法,我不知道这是否是最好的方法,但到目前为止似乎很有效 必须创建UIMenu

UIMenuController
使用的
UIMenuItem
即将弹出时,是否可以更改其标题

例如,当我在
覆盖功能执行(操作:选择器,带sender sender:AnyObject?->Bool)中允许
复制
菜单时,它将显示标签副本和我想要复制的文本,如:“复制文本\u I\u关于\u到\u复制”


我曾想过制作一个自定义UIMenuItem,但当我创建它时,我必须为标题提供文本。有可能在文本出现之前更改它吗?

我找到了一种方法,我不知道这是否是最好的方法,但到目前为止似乎很有效

必须创建UIMenuItem,然后将其添加到UIMenuController共享实例:

let frame = frameWhereYouWantToMakeTheMenuAppear.frame

let rect = CGRectMake(frame.midX, frame.maxY, 1, 1)

let customPasteMenu = UIMenuItem(title: "Paste", action: "customPaste:")

let menuController = UIMenuController.sharedMenuController()
menuController.menuItems = [customPasteMenu]
menuController.arrowDirection = UIMenuControllerArrowDirection.Up

menuController.setTargetRect(rect, inView: displayView)
menuController.setMenuVisible(true, animated: true)
然后在方法
func canPerformAction
中,测试是否允许该操作,一旦要返回
true
,就可以获得
UIMenuController
共享实例,从菜单项列表中获取菜单项并更改标题

override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
    if action == "customPaste:" {
        // do your tests and get what you want to paste for example
        let menuController = UIMenuController.sharedMenuController()
        if let customPasteMenu = menuController.menuItems?.first {
            customPasteMenu.title = yourTitle + FormatterHelper.formatAmount(stringToPaste)
        }

        return true
    }
    return false
}

我找到了一种方法,我不知道这是不是最好的,但似乎到目前为止效果不错

必须创建UIMenuItem,然后将其添加到UIMenuController共享实例:

let frame = frameWhereYouWantToMakeTheMenuAppear.frame

let rect = CGRectMake(frame.midX, frame.maxY, 1, 1)

let customPasteMenu = UIMenuItem(title: "Paste", action: "customPaste:")

let menuController = UIMenuController.sharedMenuController()
menuController.menuItems = [customPasteMenu]
menuController.arrowDirection = UIMenuControllerArrowDirection.Up

menuController.setTargetRect(rect, inView: displayView)
menuController.setMenuVisible(true, animated: true)
然后在方法
func canPerformAction
中,测试是否允许该操作,一旦要返回
true
,就可以获得
UIMenuController
共享实例,从菜单项列表中获取菜单项并更改标题

override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
    if action == "customPaste:" {
        // do your tests and get what you want to paste for example
        let menuController = UIMenuController.sharedMenuController()
        if let customPasteMenu = menuController.menuItems?.first {
            customPasteMenu.title = yourTitle + FormatterHelper.formatAmount(stringToPaste)
        }

        return true
    }
    return false
}