当我加载UITextField
. 在它上面,我有一个并且我想在我将它滚动到我的视野之外时调用它。becomeFirstResponder
ViewController
UIScrollView
resignFirstResponder
textField
的位置UITextField
可能会改变,但行为应该保持不变。关于如何实现这种事情的任何想法?谢谢。
当我加载UITextField
. 在它上面,我有一个并且我想在我将它滚动到我的视野之外时调用它。becomeFirstResponder
ViewController
UIScrollView
resignFirstResponder
textField
的位置UITextField
可能会改变,但行为应该保持不变。关于如何实现这种事情的任何想法?谢谢。
我会看看观察你scrollView
的contentOffset
财产的变化。有了scrollView
'sbounds
和contentOffset
, 和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
更新您的可见性。textField
scrollViewDidEndDragging:
scrollViewDidEndDecelerating