mousewheel - 在 MacCatalyst 中捕获滚轮事件
问题描述
我已经能够使用 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)
}
`
但是,这会捕获任何平移动作。我如何确定这是否是鼠标滚轮的结果?
解决方案
您可以检查传递给委托方法gestureRecognizer:shouldReceiveEvent:
的事件,并且只接受其类型为的事件scroll
:
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive event: UIEvent) -> Bool {
event.type == .scroll
}
}
或者您可以简单地将属性设置allowedTouchTypes
为一个空数组,这意味着所有触摸类型都将被忽略:
gestureRecognizer.allowedTouchTypes = []
推荐阅读
- node.js - 同时上传多个图像被损坏
- python - forms.py clean_fieldname() 方法中的“没有返回 HttpResponse 对象。它返回了 None”
- ionic-framework - 我已经升级到 ionic 4 但我的项目现在不支持该版本我需要降级到 ionic 3。我该怎么办?
- html - 将参考文档作为纯 HTML/Markdown 文件进行绘图?
- selenium-webdriver - 如何在 Jmeter 中编写 groovy 脚本
- android - 如何更改在不同 xml 文件中定义的按钮的文本
- unix - 替换部分文本中的空格
- image-processing - PyTorch 在加载图像/掩码文件以进行图像分割时如何处理标签?
- scala - 在 Spark DataFrame 中使用多列更改行的值
- cocoalumberjack - 为 Cocoa Lumberjack os 日志创建子系统和类别