Swift 和 Objective-C 之间的 UIGestureRecognizer

UIGestureRecognizer between Swift and Objective-C

我有一个 Swift 应用程序视图添加了一些用 ObjC 编写的组件。

我正在以这种方式将 ObjC UIViewController class 添加到 Swift 视图,无论如何它都有效(我不希望视图是弹出视图) :

view.addSubview(myObjcViewController.view)

尽管 ObjC ViewController 的视图已正确填充,没有任何问题,但 viewController 中编写的不同手势识别器不再工作:

UISwipeGestureRecognizer *upSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(upButtonTapped)];
upSwipe.numberOfTouchesRequired = 1;
upSwipe.direction = UISwipeGestureRecognizerDirectionUp;
[self.view addGestureRecognizer:upSwipe];

我尝试通过以下方式更改 gestureRecognizer 添加,但 none 成功了:

[self.parentViewController.view addGestureRecognizer:upSwipe];

// or

[[[[UIApplication sharedApplication] delegate] window] addGestureRecognizer:upSwipe];

拜托,帮忙。

问题是您不能像这样简单地获取视图控制器的视图并将其填充到界面中:

view.addSubview(myObjcViewController.view)

相反,您必须精心设计 dance 以确保两个视图控制器(拥有 view 的视图控制器和拥有 view 的视图控制器myObjcViewController.view) 双方都坚持连贯的亲子关系。

你跳的不是那个舞。因此,"child" 视图控制器不复存在,并且没有任何包含手势识别器与之对话的代码。