【问题标题】:Custom UIMenuController using button event error There can only be one UIMenuController instanceCustom UIMenuController using button event error 只能有一个 UIMenuController 实例
【发布时间】:2021-05-24 12:05:28
【问题描述】:

我创建了一个按钮,当您按住该按钮时,它将显示用于粘贴文本的标准 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())
}

【问题讨论】:

    标签: ios swift uibutton copy-paste uimenucontroller


    【解决方案1】:

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

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

    引用apple doc:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2019-04-11
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多