Захват событий с помощью колеса прокрутки в приложении Ma c, преобразованном в Catalyst - PullRequest
1 голос
/ 06 мая 2020

При работе с приложением Ma c, которое было преобразовано из iOS с помощью Catalyst, обычные способы захвата активности колеса прокрутки мыши для Ma c, например, с

  • ( void) scrollWheel: (NSEvent *) event;

не работают, поскольку NSEvent, по-видимому, не поддерживается при создании преобразованного приложения Catalyst.

Объект, которым я должен управлять, находится в обычный контейнер изображений, а не в контейнере просмотра прокрутки. Я просто пытаюсь использовать колесо прокрутки, чтобы изменить загруженное изображение. Активность трекпада работает нормально, но до сих пор не удалось запечатлеть колесо прокрутки.

Спасибо!

1 Ответ

1 голос
/ 16 мая 2020

Используйте 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];
}
...