macos - Catalyst 转换的 Mac 应用程序中的滚轮事件捕获
问题描述
当使用使用 Catalyst 从 iOS 转换的 Mac 应用程序时,捕获 Mac 鼠标滚轮活动的常用方法,例如
- (void)scrollWheel:(NSEvent *)事件;
不工作,因为在构建 Catalyst 转换的应用程序时显然不支持 NSEvent。
我需要控制的对象在常规图像容器中,而不是在滚动视图容器中。我只是想使用滚轮来更改加载的图像。触控板活动工作正常,但迄今为止捕捉滚轮一直难以捉摸。
谢谢!
解决方案
使用 UIPanGestureRecognizer 并将 allowedScrollTypesMask 设置为 UIScrollTypeMaskDiscrete:
// pan gesture to recognize mouse-wheel scrolling (zoom)
UIPanGestureRecognizer * scrollWheelGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleScrollWheelGesture:)];
scrollWheelGesture.allowedScrollTypesMask = UIScrollTypeMaskDiscrete; // only accept scroll-wheel, not track-pad
scrollWheelGesture.maximumNumberOfTouches = 0;
[self.view addGestureRecognizer:scrollWheelGesture];
接着
- (void)handleScrollWheelGesture:(UIPanGestureRecognizer *)pan
{
CGPoint delta = [pan translationInView:self.view];
CGFloat zoom = (1000 + delta.y) / 1000;
[self adjustZoomBy:zoom];
}
推荐阅读
- javascript - 反应:组件无法识别功能
- c - 如何只获取c中函数的返回值?
- json - ReSharper JSON 禁用自动格式化
- javascript - 使用 SAP Cloud SDK JavaScript 的 API_BILL_OF_MATERIAL_SRV 版本 2 的 MaterialBOMItem 的空键字段
- angular - 运行 Karma 规范时,CircleCi 随机断开与浏览器的连接
- regex - Oracle SQL 字符串操作
- php - Ajax 表单提交只能工作一次,但我希望它可以工作多次
- c# - c# - base64 jpeg 到 MemoryStream?
- java - 无需数据库访问的 JWT 身份验证
- javascript - 无法向特定的不和谐服务器发送消息,出现代码错误