2

をロードするときにUITextField呼び出すオンがあります。その上に、私はそれを持っています、そして私がそれを私の視野からスクロールアウトしたときに私はそれを呼びたいと思います。becomeFirstResponderViewControllerUIScrollViewresignFirstRespondertextField

の位置はUITextField変わる可能性がありますが、動作は同じままである必要があります。この種のことをどのように実装するかについてのアイデアはありますか?ありがとう。

4

1 に答える 1

1

私はあなたscrollViewcontentOffset財産の変化を観察することを検討します。scrollView'sboundsと' scontentOffsetの知識があれば、表示されているかどうかを判断できます。次のようなものが機能するはずです。textFieldframetextField

CGRect scrollViewVisibleBounds = CGRectOffset(scrollView.bounds, scrollView.contentsOffset.x, scrollView.contentsOffset.y);
BOOL textFieldIsVisible = CGRectIntersectsRect(textField.frame, scrollViewVisibleBounds);

あなたが今抱えている問題は、への変化をどのように観察するかcontentOffsetです。たとえば、減速アニメーション中に1秒あたり複数の更新を受信するため、(KVOを介して)常に監視することは実際には現実的ではありません。viewControllerとして設定し、やのようなコールバックを介しての可視性をUIScrollViewDelegate更新することを検討します。textFieldscrollViewDidEndDragging:scrollViewDidEndDecelerating

于 2013-02-17T15:35:19.300 に答える