Catalyst 转换的 Mac 应用程序中的滚轮事件捕获

Bru*_*ing 3 macos mac-catalyst

当使用使用 Catalyst 从 iOS 转换而来的 Mac 应用程序时,捕获 Mac 鼠标滚轮活动的常用方法,例如:

  • (void)scrollWheel:(NSEvent *)事件;

不起作用,因为在构建 Catalyst 转换的应用程序时显然不支持 NSEvent。

我需要控制的对象位于常规图像容器中,而不是滚动视图容器中。我只是想使用滚轮来更改加载的图像。触控板活动工作正常,但到目前为止捕获滚轮一直难以捉摸。

谢谢!

bry*_*eco 7

使用 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];
Run Code Online (Sandbox Code Playgroud)

进而

- (void)handleScrollWheelGesture:(UIPanGestureRecognizer *)pan
{
    CGPoint delta = [pan translationInView:self.view];
    CGFloat zoom = (1000 + delta.y) / 1000;
    [self adjustZoomBy:zoom];
}
Run Code Online (Sandbox Code Playgroud)