【发布时间】:2020-11-27 16:12:57
【问题描述】:
在 iOS 14 中,UIMenu 有了新的 API,现在可以附加到 UIBarButtonItem,就像这样:
这是我的代码:
@IBOutlet weak var addButton: UIBarButtonItem! // The button is from the storyboard.
override func viewDidAppear(_ animated: Bool) {
if #available(iOS 14.0, *) {
let simpleAction : UIAction = .init(title: "Simple", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: .init(), state: .mixed, handler: { (action) in
self.addButtonActionPressed(action: .simple)
})
let advancedAction : UIAction = .init(title: "Advanced", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: .init(), state: .mixed, handler: { (action) in
self.addButtonActionPressed(action: .advanced)
})
let actions = [simpleAction, advancedAction]
let menu = UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: actions)
addButton.primaryAction = nil
addButton.menu = menu
}
}
但问题是,当我按下按钮时,什么也没有发生。 只有当我长按按钮时,它才会显示菜单。我在网上看到过这段代码:
button.showsMenuAsPrimaryAction = true
但这对我没有帮助,因为Value of type 'UIBarButtonItem' has no member 'showsMenuAsPrimaryAction'
任何想法如何解决?我正在使用 Xcode 12.0 beta 4 (12A8179i)。
【问题讨论】:
-
我将它添加到代码中。该按钮来自故事板。
-
我尝试用代码而不是情节提要来做到这一点,它奏效了。我不知道是什么原因导致这个问题,但我已经解决了。还是谢谢。
-
好吧,您应该尝试找出导致问题的原因。即使在情节提要中创建了条形按钮项,我也没有困难地将条形按钮项的菜单设置为在点击时显示。
-
请注意 UIMenu 是 iOS 13。
标签: swift uibarbuttonitem ios14 uimenu