我在这里使用Eureka表格swift库:Eureka forms
我希望每次出现视图时,输入表单的第一行成为第一行响应者。我尝试添加.cellUpdate回调,每次出现视图时都会触发,并执行cell.becomeFirstResponder(),但这不起作用。有经验的人可以帮忙吗?感谢。
答案 0 :(得分:6)
试试这个
import UIKit
import Eureka
class ViewController3: FormViewController {
override func viewDidLoad() {
super.viewDidLoad()
form +++ Section("Custom cells")
<<< TextRow("TextRow"){_ in
}
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let row = self.form.rowByTag("TextRow") as! TextRow
row.cell.textField.becomeFirstResponder()
}
}
我希望这有助于你
答案 1 :(得分:1)
受Reinier的回答启发,这是另一种方式。
在设置表单时直接调用$ 0.cell.textField.becomeFirstResponder()。
form +++ Section()
<<< ZipCodeRow() {
$0.value = postal_code
$0.cell.textField.becomeFirstResponder()
}
答案 2 :(得分:1)
将其挂接到cellSetup中,这样我们就无需在viewDidAppear中查找该单元格
form +++ Section("")
<<< TextRow() {
$0.title = "Name"
$0.value = list?.name ?? ""
$0.cellSetup() { cell, row in
cell.textField.becomeFirstResponder()
}
$0.onChange() {
self.list.name = $0.value ?? ""
}
}
答案 3 :(得分:0)
在ViewDidLoad()中添加:
let row = self.form.rowBy(tag: "TextRow.tag") as! TextRow
row.cell.textField.becomeFirstResponder()