我找到了一個方法來做到這一點,我不知道它是否是最好的,但似乎到目前爲止工作。
你必須創建一個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
}