私はあなたscrollViewのcontentOffset財産の変化を観察することを検討します。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