2016-02-04 2 views
3

На главном экране моего приложения tvOS я использую UITapGestureRecognizer, чтобы наблюдать за нажатием кнопки Menu. В зависимости от того, что на экране, мне нужно обрабатывать его по-разному, но, очевидно, в некоторых случаях я хочу интерпретировать это меню как «выход на главный экран». Я не могу найти API, который будет делать это чисто. exit(0) находится так близко, как я могу найти, и это похоже на крушение - приложение исчезает внезапно без эффекта перехода. Есть ли API, который я могу использовать? Благодаря!tvOS - как вернуться к главному экрану программно

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(consumeTap:)]; 
    tapGestureRec.allowedPressTypes = @[@(UIPressTypeMenu)]; 
    [self.navigationController.view addGestureRecognizer:tapGestureRec]; 
} 

- (void)handleTap:(id)_ 
{ 
    if (ShouldExitNow()) exit(0); 
} 

ответ

2

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

1

Вы могли настроить Bool и проверить его в вашей handleTap функции, чтобы вернуться на домашний экран:

if returnToHomeScreen { 
    UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil) 
} 
+0

NSURLSessionTask.suspend? Этот API не предназначен для перехода на главный экран вообще ... он может работать случайно, но я уверен, что это не предназначенная функциональность. – StilesCrisis

+0

@StilesCrisis Я согласен, но, похоже, для этого не существует никакого * чистого * способа. Лучше, чем использовать 'exit (0)' как минимум. –

+0

Ну, я нашел и разместил решение, которое прекрасно работает, не полагаясь на недокументированный API. Вы должны жонглировать добавлением/удалением обработчика, но все это находится в документированном API. Трюк, подобный этому, может привлечь ваше приложение. – StilesCrisis