2013-02-17 46 views
2

我有一个UITextField我打电话becomeFirstResponder当我加载ViewController。对此,我有一个UIScrollView,我想在textField上拨打resignFirstResponder,当我有滚动出我认为。resignFirstResponder当UITextField在UIScrollView上没有看到

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

+0

为了记录,[objective-c]标签应该保留用于与Objective-C朗读使用或语法相关的问题。这个问题更侧重于使用Cocoa Touch库。同样,[iphone]标签在这里也不合适,因为它将问题标示为特定于iPhone,并排除iPad。纯粹的pedrantry,我知道:D – sjwarner 2013-02-17 15:40:44

回答

1

我会看看你的scrollViewcontentOffset属性的变化。知道scrollViewboundscontentOffsettextFieldframe您可以计算出textField是否可见。类似以下内容应该工作:

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

您现在的问题是如何观察对contentOffset的更改。经常观察(即通过KVO)并不是真的可行,因为在例如减速动画期间,您会每秒收到多个更新。我会考虑将您的viewController设置为UIScrollViewDelegate,并通过scrollViewDidEndDragging:scrollViewDidEndDecelerating等回调更新您的textField的可见性。

相关问题