当我加载UITextField
时,我有一个becomeFirstResponder
我呼叫ViewController
。在它上面,我有一个UIScrollView
,当我将其滚出时,我想在resignFirstResponder
上致电textField
。
UITextField
的位置可能会发生变化,但行为应保持不变。关于如何实现这类事情的任何想法?感谢。
答案 0 :(得分:1)
我会考虑观察scrollView
的{{1}}财产的变化。了解contentOffset
的{{1}}和scrollView
以及bounds
的{{1}},您可以了解contentOffset
是否可见。以下内容应该有效:
textField
您现在遇到的问题是如何观察对frame
的更改。不断观察(即通过KVO)是不可行的,因为在例如减速动画期间你将每秒接收多次更新。我希望将textField
设置为UIScrollViewDelegate
并通过CGRect scrollViewVisibleBounds = CGRectOffset(scrollView.bounds, scrollView.contentsOffset.x, scrollView.contentsOffset.y);
BOOL textFieldIsVisible = CGRectIntersectsRect(textField.frame, scrollViewVisibleBounds);
和contentOffset
等回调更新viewController
的可见度。