共有拡張機能を作成していますが、iOS 13.0以降でのテスト中に奇妙な動作に直面しました。私はISwipeGestureRecognizerを使用して、拡張機能のメインビューでのユーザーのスワイプジェスチャーを解釈します。
この単純なコードは、私が望む例として以下を提供し、12.4以前で完全に動作します。
@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シミュレーターで対応するバージョンの違いを確認する場合があります。
おそらく誰かがこの問題を解決し、その理由が何であるかを知っているか、その説明を見つけました-結果を共有してください。
ありがとう。
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];
};