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;
}


最近のコメント