UIGestureRecognizer между Swift и Objective-C - PullRequest
0 голосов
/ 20 мая 2018

У меня есть представление приложения Swift, добавляющее некоторый компонент, написанный на ObjC.

Я добавляю класс ObjC UIViewController в представление 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];

Я пыталсяизмените добавление gestRecognizer следующим образом, но ни один из них не сработал:

[self.parentViewController.view addGestureRecognizer:upSwipe];

// or

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

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 20 мая 2018

Проблема в том, что вы не можете просто захватить представление контроллера представления и вставить его в интерфейс следующим образом:

view.addSubview(myObjcViewController.view)

Вместо этого есть сложный танец , который вы должны сделатьчтобы оба контроллера представления (тот, который владеет view и тот, кто владеет myObjcViewController.view) оба сохраняли согласованные отношения родитель-ребенок.

Вы не исполняете этот танец.Поэтому «дочерний» контроллер представления просто исчезает, и нет ничего, содержащего какой-либо код для распознавания жестов.

...