如何使第一个文本输入成为第一响应者并使用 Eureka 表单显示键盘?
Posted
技术标签:
【中文标题】如何使第一个文本输入成为第一响应者并使用 Eureka 表单显示键盘?【英文标题】:How to make first text input become first responder and show keyboard with Eureka forms? 【发布时间】:2016-07-29 11:28:40 【问题描述】:我在这里使用 Eureka forms swift 库:Eureka forms
我想让我的输入表单的第一行成为每次视图出现时的第一响应者。我尝试添加一个 .cellUpdate 回调,该回调在每次视图出现时触发,并执行 cell.becomeFirstResponder() 但这不起作用。有这个图书馆经验的人可以帮忙吗?谢谢。
【问题讨论】:
你的单元格是什么类型的?是 TextRow、ImageRow 等? 【参考方案1】:试试这个
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()
希望对你有帮助
【讨论】:
谢谢雷尼尔!!!我看到你是 Eureka 的贡献者。如果您能看看我的另一个问题,将不胜感激:***.com/questions/38662315/… @demig0d 我会看到并发布我的结果,别担心 非常感谢! 这似乎不适用于 ios 10 或较新的 Eureka。有效的是在viewDidAppear
中调用它而不是viewWillAppear
如果我们有一个 PickerInputRow,我们想让它作为 firstResponder 怎么办?【参考方案2】:
在cellSetup中钩住,这样我们就不需要在viewDidAppear中查找cell了
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】:受 Reinier 的回答启发,这是另一种对我有用的方法。
设置表单时直接调用$0.cell.textField.becomeFirstResponder()。
form +++ Section()
<<< ZipCodeRow()
$0.value = postal_code
$0.cell.textField.becomeFirstResponder()
【讨论】:
这不适用于 iOS 10 或更新的 Eureka。【参考方案4】:斯威夫特 4:
在 ViewDidLoad() 中添加:
let row = self.form.rowBy(tag: "TextRow.tag") as! TextRow
row.cell.textField.becomeFirstResponder()
【讨论】:
以上是关于如何使第一个文本输入成为第一响应者并使用 Eureka 表单显示键盘?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 如何使 inputaccessoryview 中的文本视图成为第一响应者?
UITableView 中的 UITextField 没有成为第一响应者