我有一個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()
inviewDidAppear()
- 致電
nameField.becomeFirstResponder()
在UserInfoTableViewCell.awakeFromNib()
。 - 撥打
userInfoCell?.nameField.becomeFirstResponder()
後致電tableView.scrollToRowAtIndexPath()
。 - 去除
super.viewWillAppear()
在我的這些viewWillAppear()
都沒有爲我工作。
試試這個:'讓細胞= tableView.dequeueReusa .....'/'回報cell' –
感謝您的建議,但沒有不幸的是,這樣做。我得到相同的滾動到底部問題。 – Coder1224
嗯,我是否堆棧堆棧溢出? – Coder1224