2016-04-19 6 views
0

私は現在、アプリケーションの問題をデバッグしていて、最後の数行が途切れてしまうUITextViewをデバッグしています。 UITextViewは、それ自体が折りたたまれることを可能にするcollectionViewセルの内側にあります。フレームが変わったときにテキストを隠す実行をキャッチしようとしているので、-[UITextView setFrame:]にシンボリックなブレークポイントを設定しています。これは、collectionViewのセットアップ中に予想通りに一時停止します。setFrameを呼び出さずにtextViewのフレームを変更するには

しかし、私は最小化ボタンを押したときに、TextViewにのフレームは何とか​​それの原点と高さを変更しますが、私はsetFrame:への呼び出しを取得することはありません(あるいは、少なくとも私のブレークポイントにヒットすることは決してありません。)私もsetFrame:への呼び出しを取得することはありません私がそれを広げると、再び起源と高さが変わる。

私がtextViewを直接操作する唯一のコードは、それを隠したり隠したりすることです。隠れた後、私は、次を呼び出します。

- (void)updateCollection { 
[self.collection performBatchUpdates:nil completion:nil]; 
[self.amountCell updateTable]; 
[self.collection setNeedsLayout]; 
[self.collection layoutIfNeeded]; 
} 

amountCellは私が扱ってるのセルとは無関係ですので、私はそれがこれを行うには何を持っているとは思いません。何らかの形で、UITextViewを隠してからcollectionViewでいくつかの更新メソッドを呼び出す間に、フレームは変更されずにsetFrame:を呼び出します。これはどのように可能ですか?どのようにフレームを操作することができましたか?私はここで何かを見逃していますか?あなたが見えるかもしれません

+1

'setBounds:'または 'setCenter:'が呼び出されますか? – dan

+0

パーフェクト! 'setBounds:'について全く考えなかった。何らかの理由で私は最終的に 'setFrame:'を呼び出すと考えました。今私はなぜこれが私の境界を奇妙に設定しているのかを知ることができれば....ちょっと、答えとしてあなたのコメントを追加すれば、私が許可されたらそれを受け入れるでしょう。 –

答えて

1

場所の一つは、あなたが-setNeedsLayout-layoutIfNeededを呼び出したときにそれがないことをほのめかしていることは、レイアウトを更新する必要があると判断したときに、フレームワークによって呼び出されるコレクションビューの-layoutSubviews方法、です。これはよく見過ごされる「隠された」インフルエンサーです。特に、後のバージョンのiOSでは、コントローラの表示や視界から離れたものに焦点をシフトしています。

関連する問題