1

我在 UICollectionViewCell 子类中创建了一个 UIPanGestureRecognizer。它适用于除屏幕顶部之外的所有单元格。关于状态栏的高度,平移手势识别器已失效。它不火。我的测试应用程序只有一个 UICollectionView,没有别的。没有状态栏。我认为这可能与通知中心“活动边缘”窃取触摸事件有关。

_panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];
_panGestureRecognizer.delegate = self;
_panGestureRecognizer.maximumNumberOfTouches = 1;
[self addGestureRecognizer:_panGestureRecognizer];

在屏幕顶部,当我在单元格中平移时,平移开始时没有收到任何消息。在我抬起手指之前,不会调用回调。然后回调收到 BEGAN 并立即收到 ENDED。

- (void)panGestureRecognized:(UIPanGestureRecognizer*)sender {
    NSLog(@"pan detected"); // for first cell, only called when finger is lifted up.

    if (sender.state == UIGestureRecognizerStateBegan) {
        NSLog(@"BEGAN");
    } else if (sender.state == UIGestureRecognizerStateEnded) {
        NSLog(@"ENDED");
    }
}

单元格是手势识别器的代表。它实现:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

该单元格还覆盖了 UIView 方法:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    return YES;
}

这是屏幕顶部平移手势识别器的已知问题吗?有没有解决方法?

4

0 回答 0