2015-07-19 2 views
0

У меня есть приложение, которое использует GLKView, без каких-либо других элементов интерфейса. Я не использую GLKViewController, и я не планирую.GLKView распознаватель жестов без GLKViewController

Все мои установки приложения происходит в didFinishLaunchingWithOptions

Мой интерфейс AppDelegate определяется как:

@interface AppDelegate : UIResponder <UIApplicationDelegate, GLKViewDelegate, UIGestureRecognizerDelegate> 

В рамках этой установки, я пытаюсь настроить GestureRecognizer (ТКП, Pinch и т.д.) - однако они, похоже, не стреляют.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; 
tapGesture.delegate = self; 
tapGesture.numberOfTapsRequired = 1; 
tapGesture.numberOfTouchesRequired = 1; 
tapGesture.cancelsTouchesInView = NO; 
[view addGestureRecognizer:tapGesture]; 
tapGesture.delegate = self; 

Мой селектор определяется как:

#pragma mark - GLKViewDelegate 

- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer 
{ 
    // Code to respond to gesture here 
    NSLog (@"tapGestureUpdated()"); 
} 

Из всего кода примера я могу найти, жест recognisers, как правило, установка в методе viewDidLoad. Однако похоже, что GLKView не предоставляет этот метод - когда я пытаюсь его предоставить, он не вызывается.

Предположительно, это то, что обеспечивает GLKViewController, но, как уже упоминалось, я не использую GLKViewController.

Обратите внимание, что я могу переопределить метод touchhesBegan (и друзей), и эти селекторы запускаются, как ожидалось.

Любая идея, что я делаю неправильно, или если есть обходной путь?

ответ

0

Итак, мне удалось получить эту работу.

В начале didFinishLaunchingWithOptions создать очень простой UIViewController, вдоль линий:

static UIViewController *viewController; 
viewController = [[UIViewController alloc] init]; 

[self.window setRootViewController:viewController]; 

Я затем добавить жест контроллера представления, а не мнение.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; 
tapGesture.delegate = self; 
tapGesture.numberOfTapsRequired = 1; 
tapGesture.numberOfTouchesRequired = 1; 
tapGesture.cancelsTouchesInView = NO; 
//[view addGestureRecognizer:tapGesture]; 
[viewController.view addGestureRecognizer:tapGesture]; 

Это кажется подозрительным, так как я не определил, что должно выглядеть мнение контроллера. Но, похоже, диспетчер представлений с радостью примет эти события и поработает над этими событиями.

Смежные вопросы