iOS16での3本指ジェスチャーを無効にする方法 (開発者向け)
iOS/iPadOS 16から、3本指でタップするとツールバーが出るようになりました。回避方法がありましたので、ここに記します。
この挙動は、iOS/iPadOS 16.1で修正され、ツールバーが出なくなりました。ここに書いてあるのは古い情報です。
2022年10月7日編集: UIWindowのカテゴリをオーバーライドすると、不具合が起きるので注意してください。
端的に言うと、ViewController
などでeditingInteractionConfiguration
で.none
を返すようにし、そのViewController
をfirstResponder
にします。
ViewController
でなくても、AppDelegate
とかUIView
でも大丈夫かもしれません。
firstResponder
とは、タッチ以外のイベントを最初に受け取るオブジェクトらしいので、キーボード入力の処理をしているUIResponder
を継承したオブジェクトがあれば、それをfirstResponder
にしてeditingInteractionConfiguration
を実装すればいいと思います。
Objective-Cでの例を以下に示します。Swift使いの方はここから類推してください。
注意するべきなのは、UITextField
などがfirstResponder
になると、再び3本指ジェスチャーが有効になるので、フォーカスが外れた時に再度becomeFirstResponder
を呼び出す必要があります。
2022年9月25日編集: becomeFirstResponder
がYES
を返したときは、再び有効になることはありません。
以前の投稿はUIView
をfirstResponder
にしていましたが、変更しました。
ViewController
// viewDidLoadだとbecomeFirstResponderがNOを返す - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; } - (BOOL)canBecomeFirstResponder { return YES; } - (UIEditingInteractionConfiguration)editingInteractionConfiguration { return UIEditingInteractionConfigurationNone; }
最近のコメント