iOS

【Swift】Full Keyboard Accessが有効な際にボタンの動作が行われない。

投稿日:

はじめに

こんにちはsuzukiです。今回の記事はFull keyboard Accessという機能のONOFFでアプリが想定しない動作を行っていたため、整理をかねてまとめてみました。

フルキーボードアクセス

Full Keyboard Accessとは
iOS13.4で追加された機能です。外部のKeyboardからiPhoneにアクセスしMacと同じようなコントールを行えます。
設定>アクセシビリティ>キーボード>フルキーボードアクセスから変更が可能です。
コントロール例
次の項目に移動する: Tab
前の項目に移動する: Shift+Tab
ホーム画面に移動する: Command+H
Appスイッチャーを開く: Tab+A

今回の問題

下記の条件で、ボタン設定を行った、カスタムViewの関数がよばれないという問題が起きます。
起きる確率は100%ではないため、まだ見えていない条件か例外パターンがあります。

  • 前述のフルキーボードアクセスの設定がONである
  • Xibで作成したカスタムViewをStoryBoardで配置している
  • カスタムViewのボタンにFirstResponderを利用して関数を設定している

同一の関数をViewControllerやAppDelegate等のレスポンスチェーン内に記述すると、そちら関数がよばれます。
そのためカスタムViewが、FirstResponderとして認識されなくなり、カスタムView設定した関数がよばれないという問題が起きているのだと考えております。

対応方法

対応としては、単純にFirstResponderを利用しないというのが良いかと考えております。
ないしはViewController側に、同じメソッドを記述するでも対応は可能かと思います。

再現アプリ

ViewController

Tag0のボタンにFirstResponderから関数を設定

ChildView

カスタムView
Tag1のボタンにFilesOwnerから関数を設定
Tag2のボタンにFirstResponderから関数を設定

動かしてみた

実際に下記の順番にボタンを押した際の動作を確認してみます。
Tag:0
Tag:1
Tag:2
設定ON
ViewController:0
ChildView:1
ViewController:2

設定OFF
ViewController:0
ChildView:1
ChildView:2

さいごに

なぜ起きるのかという問題は、情報の取得方法などでいろいろ詰まっております。
ほぼほぼ同様の画面で問題が発生しないパターンが見つかっているのでそちらの角度から何か違いが見つかるといいのですが、、、
おそらくですが、フルキーボードアクセスがONの際には、アクセスを行うViewControllerに対して、命令を常に送れる状態にする影響で、サブクラス側のFirstResponderが動作しないようになっているのだと思っております。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus 詳解 Swift 第4版 [改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

MapKitをSwiftUIで使ってみた

1 はじめに2 地図の表示2.1 クリッピング表示3 地図にアノテーションを表示する3.1 マーカーの配置3.2 ピンの表示3.3 アノテーションのカスタマイズ4 さいごに5 おすすめ書籍 はじめに ...

SwiftUIでChartライブラリを使ってみた。

1 はじめに2 Chartsライブラリについて2.1 ライブラリの導入3 wrapper structの作成3.1 描画のための準備3.2 データの取得と更新3.3 コード全体4 さいごに5 おすすめ ...

[初心者向け]Xcodeの使い方(よく使うショートカットキーとエディタ)

1 はじめに1.1 前提条件2 ショートカットキー2.1 コメントアウト2.2 インデント2.3 ファイル内検索2.4 プロジェクト内検索2.5 クリーン2.6 ビルド2.7 ラン3 エディタ3.1 ...

Swift [unowned self]を[weak self]に修正してみた

1 はじめに2 通信環境の再現3 unowned self4 修正方法5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです「SwiftUI」が発表されました。レイアウト作成がとてもしやす ...

swift

UnboxとWrapでデータを永続化する

1 はじめに1.1 ライブラリの紹介1.2 前提条件2 事前準備3 実装3.1 データの準備3.2 設定データをテキストファイルに出力する3.3 設定データの読み込み4 さいごに はじめに 設定ファイ ...

フォロー

blog-page_side_responsive

2022年1月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。