UINavigationController 内の UIViewController で UIButton を rightBarButtonItem として設定し、それに iOS13 コンテキスト メニューを関連付けました。
ボタンを長押しすると、期待どおりにコンテキスト メニューが表示されます。
ボタンをタップしてもコンテキスト メニューを表示する方法はありますか (.touchUpInside イベントのターゲットを追加するなど)?
button/barButtonItem は次のように設定されます。
let button = UIButton(type: .system)
button.setImage(UIImage(systemName: "plus"), for: .normal)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton
let interaction = UIContextMenuInteraction(delegate: self)
button.addInteraction(interaction)
コンテキスト メニューは次のように定義されます。
extension ViewController: UIContextMenuInteractionDelegate {
func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { suggestedActions in
let importAction = UIAction(title: "Import", image: UIImage(systemName: "folder")) { action in }
let createAction = UIAction(title: "Create", image: UIImage(systemName: "square.and.pencil")) { action in }
return UIMenu(title: "", children: [importAction, createAction])
}
}
}