私のtvOSアプリには数秒間しか表示されないUIViewControllerがあり、完全にカスタマイズ可能なメニューボタンの処理が必要です。私はそれを次のように作成します:
- (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.
}
以下を使用してView Controllerを表示しますpushViewController:animated:
。
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
[self pushViewController:controller animated:isAnimated];
画面が表示され始めてすぐに MENU を押すと、クロスフェード トランジション エフェクトがまだ表示されている間に、ユーザーは UITapGestureRecognizer をかわして前の画面に戻ることができることがわかりましたが、これは意図したものではありません。また、メニューを何度も何度もマッシュすることで問題を引き起こすこともあります。
MENU プレスが常にオーバーライドに達するようにするにはどうすればよいですか? アプリを含む MENU ボタン ハンドラーを指定し、UINavigationController を使用する方法はありますか?