У меня есть UIViewController в моем приложении tvOS, которое появится только на несколько секунд и требует полностью настраиваемой обработки кнопок MENU. Я создаю его так:tvOS - нажатие кнопки MENU нажимает во время перехода с кнопочного контроллера
- (void)viewDidLoad
{
[super viewDidLoad];
// Add a tap gesture recognizer to handle MENU presses.
UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tapGestureRec.allowedPressTypes = @[@(UIPressTypeMenu)];
[self.view addGestureRecognizer:tapGestureRec];
}
- (void)handleTap:(UITapGestureRecognizer *)sender
{
// Code to process the MENU button is here.
}
отобразить контроллер представления с помощью pushViewController:animated:
:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
[self pushViewController:controller animated:isAnimated];
Я обнаружил, что, если пользователь нажимает кнопку MENU, как только экран начинает появляться, в то время как крест -fade-эффект перехода по-прежнему отображается, они могут уклониться от UITapGestureRecognizer и вернуться к предыдущему экрану, который не предназначен. Они также могут вызывать проблемы, сменяя МЕНЮ снова и снова - в конечном итоге они избегут вещей, которые им не удастся.
Как я могу гарантировать, что нажатие кнопки MENU всегда будет меняться? Есть ли способ указать приложение, содержащее обработчик кнопки MENU, и все еще использовать UINavigationController?