【问题标题】:Capturing a scroll wheel event in MacCatalyst在 MacCatalyst 中捕获滚轮事件
【发布时间】:2020-05-19 21:15:28
【问题描述】:

我已经能够使用 UIPanGestureRecognizer 捕获鼠标滚轮。

`
    let tPan = UIPanGestureRecognizer(target: self, action: #selector(self.wasPanned))
    tPan.maximumNumberOfTouches = 1
    tPan.minimumNumberOfTouches = 1
    if #available(macCatalyst 13.4, *) {
        tPan.allowedScrollTypesMask = .discrete
    }
    self.addGestureRecognizer(tPan)

}

@objc func wasPanned(_ pan: UIPanGestureRecognizer) {
    let thispan = pan
    print(pan)
}

`

但是,这会捕获任何平移动作。如何确定这是否是鼠标滚轮的结果?

【问题讨论】:

    标签: mousewheel mac-catalyst


    【解决方案1】:

    可以查看传递给委托方法gestureRecognizer:shouldReceiveEvent:的事件,只接受类型为scroll的事件:

    extension ViewController: UIGestureRecognizerDelegate {
        func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive event: UIEvent) -> Bool {
            event.type == .scroll
        }
    }
    

    或者您可以简单地将属性allowedTouchTypes 设置为一个空数组,这意味着所有触摸类型都将被忽略:

    gestureRecognizer.allowedTouchTypes = []
    

    【讨论】:

    • 似乎不适用于 mac-catalyst 应用程序。 c 响应滚动的其他触摸。
    • 我刚试过,它只响应鼠标滚动。当我单击并移动鼠标或使用触摸板时,它不会检测到平移手势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    相关资源
    最近更新 更多