2016-08-04 16 views
0

この問題は説明するのが難しいため、私はベアボーンのXcodeプロジェクトhereのGitHubレポを作成して問題をデモしました。奇妙なUIScrollViewの動作

一言で言えば、私はUIScrollViewのサインアップフォームを持っています。これは、特定のシナリオでビューが半反応しない(ボタンアクションが起動しない)ようにします。再現する手順は、それぞれUITextFieldを手動で選択し、キーボードの「完了」ボタンを押して、最後のフィールドを終了することです。この一連のユーザー入力は、動作を再現する唯一の方法と思われます。

keyboardWillHide通知に応答してスクロールビューのコンテンツオフセットをリセットするためにハックを使用してこの問題を解決することができましたが、スクロール位置が目に見えるようになりました。

ここで何が起こっているかについてのアイデアはありますか?私はこれを調査して2日を過ごしました。何が起きているのかについて全然迷っています。本当にここでいくつかの助けに感謝します!

+0

無関係な、しかしたい作業コードで行く

EDITここ

:-)あなたの問題を解決します「スイッチ」のすべての「ケース」の終わりに。これはSwift、Cではなく – matt

+0

@matt Lol fair point :) – doovers

+0

私は問題を再現できません。あなたはより良い指示を与えることができますか? – matt

答えて

1

私は次のように助言する:

  • は "中央scrollview" ものを取り除きます。これは間違っています。コンテンツを垂直方向にセンタリングする場合は、コンテンツビューに配置し、autolayoutを使用します。

  • WillKeyChangeではなくUIKeyboardWillShowNotificationを検出します。

  • あなたの「仕事をするためのハック」を取り除きます。

+0

私はこれらの変更を行ったときに私にとってうまくいくことを示すYouTubeのビデオを投稿しました:https://youtu.be/ZQqJ6-PfR6k – matt

+0

私もあなたの新しい指示に従っていますが、問題は再現できません。 [サインアップ]ボタンは引き続き使用できます。 – matt

+0

ああ、私はあなたが何を意味するかを見ます。はい、ボタンはまだ反応しますが、アクションを実行していません。それをタップした後、コンソールにprintステートメントがあるはずです。また、テキストフィールドが応答しなくなります。 – doovers

-1

UITextFieldがファーストレスポンダになるたびに、UIKeyboardWillHideNotificationが呼び出されます。したがって、コンテンツのオフセットを計算することは非常に難しいでしょう。UITextFieldDelegate。キーボードは常にそこにあると思うかもしれませんが、レスポンダを変更するとキーボードは変わります。 UITableViewControllerはあなたの問題を自動的に解決することができます。

0

コンテンツのサイズが適切に設定されていないような理由が考えられます。スクロールビューの中に入れたbackground color of viewを設定します。 background color of scrollviewも設定します。あなたは考えを得るでしょう、いくつかのテキストフィールドはout of contentsizeエリアです。だからこそ、それは反応しなくなる。

まだ問題がある場合は教えてください。それはあなたがあなたが `ブレークを必要としません:-)

https://www.sendspace.com/file/k5v9uy

+0

サインインボタンとサインアップボタンはコンテンツエリアの下にあります。 –

+0

あなたはどのサイズの画面をテストしていますか?私はiPhone 6を使用しています。 – doovers

+0

私は将軍について話しています。あなたのストーリーボードを私に見せてもらえますか?私はあなたが間違ったことをあなたに導くことができます。 –