Ios 接触开始时,uibarbuttonite的延伸

Ios 接触开始时,uibarbuttonite的延伸,ios,swift,uibarbuttonitem,Ios,Swift,Uibarbuttonitem,实际上,我正在使用一个可访问性管理器类管理连接 我已经制作了一个祝酒词,显示连接何时丢失和恢复。 我还创建了两个扩展(UIButton和UISwitch),并在其上覆盖func Touches开始检查和播放按钮/开关的操作,或仅显示带有错误消息的toast(不播放按钮/开关的选择器) 以下是我要了解的UIButton扩展: extension UIButton { open override func touchesBegan(_ touches: Set<UITouch>,

实际上,我正在使用一个可访问性管理器类管理连接

我已经制作了一个祝酒词,显示连接何时丢失和恢复。 我还创建了两个扩展(UIButton和UISwitch),并在其上覆盖func Touches开始检查和播放按钮/开关的操作,或仅显示带有错误消息的toast(不播放按钮/开关的选择器)

以下是我要了解的UIButton扩展:

extension UIButton {
    open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if ReachabilityManager.shared.reachability.connection == .none {
            ReachabilityManager.shared.customConnectionToast(ToastStyle.connectionLost.applyStyle(),
                                  description: NSLocalizedString("no_connection_error_message", comment: ""))
        } else {
            sendActions(for: UIControlEvents.allTouchEvents)
        }
    }
}
扩展按钮{
打开覆盖功能触摸开始(touchs:Set,带有事件:UIEvent?){
如果ReachabilityManager.shared.reachability.connection==.none{
ReachabilityManager.shared.CustomConnectionHost(ToastStyle.connectionLost.applyStyle(),
描述:NSLocalizedString(“无连接错误消息”,注释:“”)
}否则{
sendActions(用于:UIControlEvents.allTouchEvents)
}
}
}
我现在需要为uiBarButtonim创建相同的扩展,但问题是这个对象没有touchesBegind操作,我不知道如何创建类似于UIbutton和UISwitch扩展的东西。另一个关于我为什么要这样做的信息是,我无法重构应用程序的所有barbutton项(这将花费我2周的时间)。为此,我必须找到一种扩展或其他方法,但绝对是一种通用的解决方案

如果有人知道我会很感激的

提前谢谢你


亲切问候,

一个快速解决方案:使用
UIButton
并将其设置为
uiBarButtonim
,然后您可以使用您上面发布的类别(uiButtonim的扩展)将新按钮设置为BarButtonim

像这样:

internal lazy var button_Close: UIButton = {
        let button = UIButton(type: .custom)
        button.setImage(.close, for: .normal)
        button.imageEdgeInsets = UIEdgeInsets.init(top: 0, left: -30, bottom: 0, right: 0)
        button.addTarget(self, action: #selector(back(_:)), for: .touchUpInside)
        return button
    }()
使其成为一个按钮项目:

override func viewDidLoad() {
    super.viewDidLoad()

    let barButton = UIBarButtonItem(customView: self.button_Close)
    self.button_Close.frame = CGRect(x: 0, y: 0, width: 55.0, height: 44.0)
    let negativeSpacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.fixedSpace, target: nil, action: nil)
    if #available(iOS 11.0, *) {
        negativeSpacer.width = -30
    }
    self.navigationItem.leftBarButtonItems = [negativeSpacer, barButton]
}

我希望这有帮助

感谢@Glenn的快速回答,但问题是应用程序太大了,我无法重构应用程序的所有按钮项(这将花费我两周时间)。我必须找到一种扩展或其他方法,但绝对是一种通用的解决方案。Welp,恐怕你别无选择,只能使用这种方法。我希望有另一种方式,我也想知道这一点