无法向UIMenuController

时间:2018-04-23 18:06:47

标签: ios iphone swift swift4 uimenucontroller

我想在消息中创建一个longPress并在UIMenuController中显示两个选项

删除并复制

但仅显示复制

@objc func longPressLabel(sender: AnyObject?) {
   becomeFirstResponder()

   let copyMenuItem = UIMenuItem(title: “Copy”.localized, action: #selector(copyTapped))
   let deleteMenuItem = UIMenuItem(title: “Delete”.localized, action: #selector(deleteTapped))

   let menu = UIMenuController.shared

   menu.arrowDirection = UIMenuControllerArrowDirection.down
   menu.setTargetRect(bounds, in: self)
   menu.menuItems = [copyMenuItem, deleteMenuItem]

   menu.setMenuVisible(true, animated: true)

}

此外,如果我删除所有UIMenuItem并且我创建一个空菜单,这会显示一个复制选项,就像它显示模板而不是我添加的选项

我正在使用 IOS 11.1 Swift4.1

这是Example

2 个答案:

答案 0 :(得分:0)

设置menu.menuItems后,您需要调用menu.update()来更新菜单控制器的外观。

答案 1 :(得分:0)

我添加了这个方法

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
       if action == #selector(deleteTapped(_:)) || action == #selector(copyTapped(_:)) {
           return true
       }
       return false
   }

这有助于说明定义了哪些事件。 如果动作是deleteTapped或Copytapped它将返回true并将显示它。