2016-05-01 3 views
0

У меня есть tableView с двумя UITextViews. Пользователь может добавить столько ячеек, сколько захочет, нажав кнопку «+». TableView начинается с одной строки (ячейки). Допустим, пользователь добавляет некоторую информацию в два текстовых элемента, а затем нажимает кнопку плюс и прокручивает, чтобы добраться до нее. Я называю эту функцию, чтобы закрыть клавиатуру, когда пользователь прокручивает так что это не так, как:Вызов endEditing на UIView

override func scrollViewDidScroll(scrollView: UIScrollView) { 

    self.view.endEditing(true) 

} 

Теперь клавиатура исчезает, и пользователь переходит нажать на текстовое поле во второй строке. TableView вскакивает (я думаю, чтобы разместить клавиатуру), но textField нельзя редактировать (курсор и клавиатура не отображаются). Если я вернусь к первой строке (строка 0), появится клавиатура, и я смогу редактировать текст. Почему это происходит?

+0

что произойдет, если вы звоните resignFirstResponder в первый TextView? – Miroslav

ответ

1

Существует свойство на Scrollview подклассов (например TableViews)

tableView.keyboardDismissMode = .OnDrag 

После того, как пользователь начинает нисходящую перетащить его отклоняет клавиатуры

+0

Точно, что я искал, спасибо! –

+0

Теперь я замечаю ошибку, когда я вызываю этот код в viewDidLoad. Я получаю ~~ - [UIWindow endDisablingInterfaceAutorotationAnimated:] вызывается > без соответствия -beginDisablingInterfaceAutorotation. Не обращая внимания. ~~ Я посмотрел это онлайн, и ни одно из решений не избавилось от этой ошибки. Есть идеи? –

+0

Не знаю! Однако, если вы используете раскадровку, вы можете установить ее в инспекторе атрибутов ScrollView -> Keyboard. – Cjay

0

scrollViewDidScroll вызывает каждый раз, когда открывается табличное представление, поэтому, когда «TableView вскакивает (я думаю, чтобы разместить клавиатуру)», он также вызывает и закрывает клавиатуру. Вы должны добавить туда некоторые ограничения или поместить код конечного кода в другое место.

Смежные вопросы