我想在消息中创建一个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
答案 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并将显示它。