2013-02-17 2 views
2

У меня есть UITextField, на котором я звоню becomeFirstResponder при загрузке ViewController. На нем у меня есть UIScrollView, и я хотел бы позвонить resignFirstResponder на textField, когда у меня есть прокрутил его моего вида.resignFirstResponder, когда UITextField на UIScrollView не отображается

Позиция UITextField может измениться, но поведение должно оставаться неизменным. Любые идеи о том, как вы реализуете подобные вещи? Благодарю.

+0

Для записи тега [object-c] следует действительно зарезервировать для вопросов, связанных с использованием или синтаксисом Lanugage Objective-C. Этот вопрос более сфокусирован на использовании библиотеки Cocoa Touch. Аналогично, тэг [iphone] здесь не подходит, поскольку он ставит вопрос как конкретный для iPhone и исключает iPad. Чистая пищевая промышленность, я знаю: D – sjwarner

ответ

1

Я бы посмотрел на изменения в вашем scrollViewcontentOffset. Со знанием scrollViewbounds и contentOffset и textFieldframe вы могли бы работать, если видна textField. Нечто подобное должно работать:

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

Проблема у вас есть сейчас, как наблюдать изменения в contentOffset. Невозможно постоянно наблюдать (т. Е. Через KVO), поскольку вы будете получать несколько обновлений в секунду во время, например, анимации замедления. Я бы посмотрел, как установить viewController на UIScrollViewDelegate и обновить видимость textField через обратные вызовы, такие как scrollViewDidEndDragging: и scrollViewDidEndDecelerating.