我有一个长按处理程序,显示 在文档中,我发现setTargetRect和setMenuVisible已弃用
像这样进行更改仍然没有帮助。有解决办法吗?UIMenuController
,它在private func longPressHandler(sender: UILongPressGestureRecognizer) {
guard
sender.state == .began,
let senderView = sender.view,
let superView = sender.view?.superview
else {
return
}
senderView.becomeFirstResponder()
UIMenuController.shared.setTargetRect(senderView.frame, in: superView)
UIMenuController.shared.setMenuVisible(true, animated: true)
}
private func makeMenuController() {
UIMenuController.shared.menuItems = [
UIMenuItem(title: "ui.report".localized, action: ChatCustomMenuItems.report),
UIMenuItem(title: "ui.chat.reply".localized, action: ChatCustomMenuItems.reply),
UIMenuItem(title: "ui.action.block".localized, action: ChatCustomMenuItems.block)
]
}
if #available(iOS 13.0, *) {
UIMenuController.shared.isMenuVisible = true
UIMenuController.shared.showMenu(from: superView, rect: senderView.frame)
} else {
UIMenuController.shared.setTargetRect(senderView.frame, in: superView)
UIMenuController.shared.setMenuVisible(true, animated: true)
}
答案 0 :(得分:3)
我遇到了完全相同的问题!该问题可能是由于未致电
引起的window?.makeKeyAndVisible()
或在application:didFinishLaunchingWithOptions:
方法之前调用它
答案 1 :(得分:0)
只需确保您没有在代码中创建UIMenuController的其他实例,例如 let menu = UIMenuController()
答案 2 :(得分:0)
就我而言,我需要致电becomeFirstResponder
来显示菜单:
window?.makeKey()
becomeFirstResponder()