UISwipeGestureRecognizer和ShareExtension。在iOS 12.4和13.0及最新版本上的不同行为(bug或未记录?

问题描述 投票:1回答:1

我正在创建一个Share扩展,在iOS 13.0和更高版本的测试中遇到了一个奇怪的行为,我使用了UISwipeGestureRecognizer和ShareExtension。我使用 UISwipeGestureRecognizer(图形识别器) 来解释用户在我的扩展的主视图上的滑动手势。

下面提供的这段简单的代码是我想要的一个例子,在12.4和更老的版本上工作得很完美,在iOS 13.0和更新的版本上,它没有任何记录。

@interface ShareAndSwipeRootController ()
@end

@implementation ShareAndSwipeRootController

- (void)loadView {
    [super loadView];

    [self.view setBackgroundColor:[UIColor redColor]];
    [self.view setUserInteractionEnabled:YES];

    UISwipeGestureRecognizer *swipeUpGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUp:)];
    swipeUpGestureRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
    [self.view addGestureRecognizer:swipeUpGestureRecognizer];

    UISwipeGestureRecognizer *swipeDownGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDown:)];
    swipeDownGestureRecognizer.direction = UISwipeGestureRecognizerDirectionDown;
    [self.view addGestureRecognizer:swipeDownGestureRecognizer];

 };

-(void) swipeUp:(UISwipeGestureRecognizer *)recognizer {
    NSLog(@"SWIPE Up");
}

-(void) swipeDown:(UISwipeGestureRecognizer *)recognizer {
    NSLog(@"SWIPE Down");
}

@end

在iOS 13.0和更新版本上,它没有任何记录。你可以在iOS模拟器上检查相应版本的差异。

也许有人解决了这个问题,知道是什么原因,或者找到了它的描述 - 请分享结果。

谢谢。

ios objective-c uigesturerecognizer uiswipegesturerecognizer share-extension
1个回答
1
投票

你需要检查.gestureRecognizers属性,以检查出了什么问题或发生了什么异常。

因为它是一个服务器手势识别器。shouldRecognizeSimultaneouslyWith 方法,如下图所示。

gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)

如果一切顺利,就会写成True.


0
投票

Vlad,这段代码在我的模拟器和设备(13.5)上工作得很好,但我建议你用不同的方法。

它是一个有点沉重的手来实现 loadView 如果你这样做,你不应该打电话 super 在这个方法中。

为什么不把你的代码原封不动地移到 viewDidLoad 你通常在哪里附加手势?所以删除 loadView 并做

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor redColor]];
    [self.view setUserInteractionEnabled:YES];

    UISwipeGestureRecognizer *swipeUpGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUp:)];
    swipeUpGestureRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
    [self.view addGestureRecognizer:swipeUpGestureRecognizer];

    UISwipeGestureRecognizer *swipeDownGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDown:)];
    swipeDownGestureRecognizer.direction = UISwipeGestureRecognizerDirectionDown;
    [self.view addGestureRecognizer:swipeDownGestureRecognizer];

 };
© www.soinside.com 2019 - 2024. All rights reserved.