0

セルが表示されなくなったときにセルを解放しないようにUITableViewに指示する方法はありますか?

私はこの問題を抱えているのでこれを求めています:私は「ビューの挿入」として使用されるUITableViewを持っています。セル内には多くのUITextViewがあります。UITableViewを押すと、「becomeFirstResponder」を最初のセルに送信して、キーボードを開いた状態でビューを開始します。これは正しく機能します。

しかし、下にスクロールすると、最初のセルが表示されなくなると、キーボードが閉じます。注:関連付けられたUITextViewはプロパティ保持であり、正しく割り当てられたままです。セルが消え、UITextViewがファーストレスポンダーを辞任したように見えます。

UITextViewがいつ表示されるかを確認し、別のbecomeFirstResponderを送信できることは知っていますが、最初のリクエストで目標を達成できるかどうかを知りたいです:-)

よろしくファビオありがとう

4

2 に答える 2

0

セルでテーブルビューを使用している間、通常はセルを解放しません。初めてテーブルが表示されたときに表示されるいくつかのセルを割り当てます。その後、同じセルを使用するということは、異なるインデックスパスで異なる日付に同じセルを再利用することを意味します。UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];を使用する必要があります。

于 2012-04-12T17:07:22.457 に答える
0

ここに私が見つけたいくつかの新しい情報があります:

キーボードが初めて閉じているのを見ました。例:ビューは、firstResponderとしてUITextViewを使用してロードされました。スクロールすると、キーボードが閉じます。ただし、UITextViewをもう一度タップすると、キーボードが再び開き、もう一度スクロールしても閉じません。

理由を理解するために探して、私はこれを発見しました:

  • 「viewDidLoad」では、ファーストレスポンダーを設定していました
  • cellForRowAtIndexPathで、UITextViewをサブビューとして追加していました
  • cellForRowAtIndexPathは、ViewDidLoadの後に呼び出されます

UITextViewがファーストレスポンダーを辞任していたとき、UITableViewがCellForRowAtIndexPathメソッドを呼び出してその特定のセルを検索していたために発生していることがわかりました。ただし、もう一度タップすると、CellForRowAtIndexPathは他のセルに対してのみ呼び出され、選択されたセルに対しては呼び出されませんでした。UITableViewの設定後にUITextViewがファーストレスポンダーとして設定された場合、セルは表示されていなくても保持されているように見えました。

次に、「viewDidAppear」の「becomefirstresponder」を移動しようとしました(uitableviewセットアップの後で呼び出されます)。その後、魔法のように問題が解決しました:-)内部のUITextViewが最初のレスポンダーである場合、セルは解放されなくなります。

残っている唯一の問題はこれでした。viewDidApperで「becomeFirstResponder」を呼び出すと、キーボードの遅延が画面に表示されます。これを回避するために、viewDidLoadでbecomeFirstResponderを呼び出し、次にviewDidAppearで辞任して、becomeFirstResponderを再度呼び出しました。

お役に立てれば

于 2012-04-15T14:59:10.897 に答える