gpt4 book ai didi

选择显示键盘的单元格时,iOS TableView 的 indexPath 错误

转载 作者:可可西里 更新时间:2023-11-01 00:23:47 24 4
gpt4 key购买 nike

我有 tableView 大小由 AutoLayout 设置(底部到底部布局指南,顶部到另一个 View 等等,但首先是 UISearchBar 到顶部布局指南): My tableView

带有 tableView 的 Controller :

Controller settings

我需要在显示键盘时更改表格偏移量,所以我有以下两种方法:

// MARK: - Keyboard
func keyboardWasShown (notification: NSNotification) {
let info: NSDictionary = notification.userInfo!
let value: NSValue = info.valueForKey(UIKeyboardFrameBeginUserInfoKey) as! NSValue
let keyboardSize: CGSize = value.CGRectValue().size

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0)
self.tableView.scrollIndicatorInsets = self.tableView.contentInset

}

func keyboardWillBeHidden (notification: NSNotification) {
self.tableView.contentInset = UIEdgeInsetsZero
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero
}

它工作正常,但在显示键盘时出现问题。无法选择最后一项,而是我得到了上一项。我点击了最后一项的位置,它应该导航到包含最后一项的详细信息页面,但我看到的是包含前一项的详细信息页面。它不是针对所有项目转移,而是针对最后一个项目转移,当我过滤到一个项目时它工作正常。当键盘被隐藏时(并且项目仍然被过滤)那么它也没关系(它选择了正确的东西)。所以我想问题一定出在这里:

    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0)
self.tableView.scrollIndicatorInsets = self.tableView.contentInset

那么问题出在哪里呢?感谢帮助

最佳答案

我找到了解决方案。我正在使用 UIKeyboardWillHideNotification 并且在 didSelectRowAtIndexPath 之前调用了方法 keyboardWillBeHidden 所以 tableViewcontentInset被设置回 UIEdgeInsetsZero 然后 indexPath 错误。所以现在我使用 keyboardDidHide 而不是 keyboardWillBeHidden:

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillBeHidden:", name: UIKeyboardWillHideNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidHide:", name: UIKeyboardDidHideNotification, object: nil)

...

func keyboardDidHide (notification: NSNotification) {
self.tableView.contentInset = UIEdgeInsetsZero
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero
}

关于选择显示键盘的单元格时,iOS TableView 的 indexPath 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com