我有一个显示UIMenuController的长新闻处理程序,它在< ios13.2上像往常一样工作,例如在13.1上工作得很好,但是在ios13.2上它没有显示,下面是我有的方法:
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)
]
}在文档中,我发现setTargetRect和setMenuVisible被废弃了

像这样改变还是没什么用。有解决办法吗?
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)
}发布于 2019-12-09 09:13:38
我也遇到过同样的问题!这个问题可能是由于不调用
window?.makeKeyAndVisible()或者在application:didFinishLaunchingWithOptions:方法之前调用它
发布于 2020-06-25 14:42:11
在我的例子中,我需要调用becomeFirstResponder使菜单显示:
window?.makeKey()
becomeFirstResponder()发布于 2020-06-09 14:21:07
只需确保您没有在代码中创建UIMenuController的其他实例,如let菜单= UIMenuController()
https://stackoverflow.com/questions/59176844
复制相似问题