gpt4 book ai didi

ios - TableView 与 TextView : go to next Textview?

转载 作者:行者123 更新时间:2023-11-30 11:54:19 25 4
gpt4 key购买 nike

我正在尝试创建一个列表应用程序,并使用 TableView 和 TextView 的组合。我有一个包含数据的 groups 和 groupsItem 数组。我使用这些数组来填充表格 View 。

当用户点击“enter”时,我将添加到数组并重新加载表格。它运行良好,但问题是我无法将 textView 焦点转到下一个 textView。下一个 textView 始终为“nil”。我有一种感觉,这是因为我试图在 tableView 重新加载时执行此操作。有什么想法吗?

class TableViewController: UITableViewController, UITextViewDelegate {

var groups = [String]()

var groupItems = [[String]]()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableViewAutomaticDimension
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func textViewDidChange(_ textView: UITextView) {
tableView.beginUpdates()
tableView.endUpdates()
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return groups[section]
}

override func numberOfSections(in tableView: UITableView) -> Int {
return groups.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return groupItems[section].count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ExpandingCell

cell.textView.delegate = self
cell.textView.tag = indexPath.row

cell.textView?.text = groupItems[indexPath.section][indexPath.row]

return cell
}

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if(text == "\n") {

// On enter add to second last item in array
groupItems[groupItems.count - 1].insert(textView.text, at: groupItems[groupItems.count - 1].count - 1)

// Reload the table to reflect the new item
tableView.reloadData()

// Try to find next responder
if let nextField = textView.viewWithTag(textView.tag + 1) as? UITextView {
nextField.becomeFirstResponder()
} else {
// Not found, so remove keyboard.
textView.resignFirstResponder()
}

return false
}
return true
}


@IBAction func AddItem(_ sender: UIButton) {
groups.append("Cake")
groupItems.append([""])
tableView.reloadData()
}
}

最佳答案

您可能需要做两件事:

  1. 使用-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]要求表格滚动以便下一行在 View 中。 .

  2. 使用 -[UIView layoutIfNeeded] 要求 TableView 自行布局。 TableView 通常不会在reloadData期间向自身添加 subview 。 ,仅在布局期间。

关于ios - TableView 与 TextView : go to next Textview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994316/

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