現在iOSアプリの開発をしているのですが、とある状況の時にタップ判定が上手く機能しなくて困っています。
まず画面構成が少し複雑で以下のようになっています。
(わかりづらくてすみません…)
- 全体を囲うUIViewControllerのViewは上下の領域に分かれている
- 下の領域にUIPageViewControllerが配置され、その内側にUIViewControllerがある
- 内側のViewControllerはUITableViewとUITextViewからなり、UITextViewで入力してコメントを投稿するとUITableViewに反映される
- UITextViewを入力する時に、UIPageViewControllerの領域が上に広がり、画面いっぱいを覆い尽くすようになる
- UITextViewの上にあるUITableViewをタップしたらキーボードを閉じたい(resignFirstResponderを呼び出し)
ここで問題になるのが、「UITableViewをタップしても、UITextViewが閉じてくれない時がある」ということです。
(なぜか確率的に半々くらいです)
具体的にどのようにおかしな挙動になるのかを調べたところ、UITextViewが引っ込んでくれないときは、UITableViewではないところをタップしてもタップ判定になり、UITextFieldのresignが効かなくなってしまいます。
おそらく原因としては、UIPageViewControllerの領域を後から広げていることで、領域を変えずに実行してみると、しっかりUITextViewが引っ込んでくれるのは確認しています。
ちなみにUIPageViewControllerの領域の広げ方は、上の余白を縮めることで画面いっぱいに表示させていますが、それがよくない動作なのかもしれません。
ただこのような動作をしているアプリは既に存在するので、何かしらの方法で実現できるとは思うのですが、どこが悪いのか、またどのようにすれば改善するのか教えて頂けますと幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/09 15:22
退会済みユーザー
2017/02/10 00:44