Custom UIMenuController using button event error只能有一个UIMenuC



我创建了一个按钮,当你按住它时,它会显示用于粘贴文本的标准ios菜单按钮,但当我按住按钮2次时,我得到一个错误说There can only be one UIMenuController instance.,我该如何解决这个问题?

我的代码

override init(frame: CGRect) {
super.init(frame: frame)
self.configureView()
}

required init?(coder: NSCoder) {
super.init(coder: coder)
self.configureView()
}
private func configureView() {
guard let view = self.loadViewFromNib(nibName: "CustomView") else { return }
view.frame = self.bounds
self.addSubview(view)

button.addTarget(self, action: #selector(holdButton), for: .touchDown)
}
@objc func holdButton(_ sender: UIButton) {
let menuController = UIMenuController()
menuController.setTargetRect(sender.frame, in: charTextField)
menuController.setMenuVisible(true, animated: true)
}

另外,当用户点击paste按钮时,我怎么能听到他的声音呢?

我想让它在点击paste时调用这个函数

func pasteClick() {
print("pasted", clipboardString())
}

使用UIMenuController提供的默认单例实例(.shared),而不是创建您自己的实例

@objc func holdButton(_ sender: UIButton) {
UIMenuController.shared.setTargetRect(sender.frame, in: charTextField)
UIMenuController.shared.setMenuVisible(true, animated: true)
}

引用自apple doc:

单例UIMenuController实例被称为编辑菜单…

相关内容

最新更新