У меня есть подкласс UITableViewController
, который отображает несколько строк (точнее, 8), где верхняя строка - это пользовательская ячейка, содержащая UITextField
. Когда представление загружено, я сразу же вывожу клавиатуру, вызывая becomeFirstResponder
по этому адресу textfield
. Все это работало нормально, пока я не обновился с iOS 9 до iOS 10. Теперь представление переместится в нижнюю часть представления, при этом клавиатура закрывает мои последние две строки, а мой TextField
находится за пределами видимой области. Когда я комментирую звонок becomeFirstResponder
, прыжки уходят, но я теряю всплывающее окно клавиатуры, конечно. Это то, что мой код выглядит ...iOS 10 - UITableViewController прокручивается вниз при загрузке
class UserProfileTableViewController: UITableViewController {
private var userInfoCell: UserInfoTableViewCell?
...
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.section == 0 {
userInfoCell = tableView.dequeueReusableCellWithIdentifier("userInfoCell", forIndexPath: indexPath) as? UserInfoTableViewCell
if !editMode {
userInfoCell?.nameField.becomeFirstResponder()
}
return userInfoCell!
}
else if indexPath.section == 1 {
....
Тогда мой пользовательский вид ячейки таблицы выглядит следующим образом ...
class UserInfoTableViewCell: UITableViewCell, UITextFieldDelegate,, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var photoImageView: UIImageView!
...
override func awakeFromNib() {
super.awakeFromNib()
// listen for when user touches a textfield
nameField.delegate = self
...
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
...
вещи я попытался:
- Вызов
userInfoCell?.nameField.becomeFirstResponder()
вviewWillAppear()
- Телефон:
userInfoCell?.nameField.becomeFirstResponder()
Факс:viewDidAppear()
- Вызов
nameField.becomeFirstResponder()
вUserInfoTableViewCell.awakeFromNib()
. - Вызов
tableView.scrollToRowAtIndexPath()
после звонка на номерuserInfoCell?.nameField.becomeFirstResponder()
. - удаление
super.viewWillAppear()
в моейviewWillAppear()
Ни один из них работали для меня.
попробовать это: 'пусть Cell = tableView.dequeueReusa .....'/'вернуться cell' –
Спасибо за предложение, но, что не сделал сделайте это, к сожалению. Я получаю тот же свиток к нижней проблеме. – Coder1224
Хммм, я пень переполнения стека? – Coder1224