2

当我加载UITextField. 在它上面,我有一个并且我想在我将它滚动到我的视野之外时调用它。becomeFirstResponderViewControllerUIScrollViewresignFirstRespondertextField

的位置UITextField可能会改变,但行为应该保持不变。关于如何实现这种事情的任何想法?谢谢。

4

1 回答 1

1

我会看看观察你scrollViewcontentOffset财产的变化。有了scrollView'sboundscontentOffset, 和textField's 的知识,frame你可以计算出是否textField可见。像下面这样的东西应该可以工作:

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

您现在遇到的问题是如何观察contentOffset. 持续观察(即通过 KVO)实际上并不可行,因为您将在例如减速动画期间每秒收到多个更新。我会考虑将您设置viewController为 a并通过和 之类的回调UIScrollViewDelegate更新您的可见性。textFieldscrollViewDidEndDragging:scrollViewDidEndDecelerating

于 2013-02-17T15:35:19.300 回答