首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIMenuController在iOS 13.2中不可见

UIMenuController在iOS 13.2中不可见
EN

Stack Overflow用户
提问于 2019-12-04 13:10:55
回答 4查看 3.1K关注 0票数 3

我有一个显示UIMenuController的长新闻处理程序,它在< ios13.2上像往常一样工作,例如在13.1上工作得很好,但是在ios13.2上它没有显示,下面是我有的方法:

代码语言:javascript
复制
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被废弃了

像这样改变还是没什么用。有解决办法吗?

代码语言:javascript
复制
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)
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-12-09 09:13:38

我也遇到过同样的问题!这个问题可能是由于不调用

代码语言:javascript
复制
window?.makeKeyAndVisible()

或者在application:didFinishLaunchingWithOptions:方法之前调用它

票数 5
EN

Stack Overflow用户

发布于 2020-06-25 14:42:11

在我的例子中,我需要调用becomeFirstResponder使菜单显示:

代码语言:javascript
复制
window?.makeKey()
becomeFirstResponder()
票数 1
EN

Stack Overflow用户

发布于 2020-06-09 14:21:07

只需确保您没有在代码中创建UIMenuController的其他实例,如let菜单= UIMenuController()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59176844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档