我有一个包含多个 UITextField 的 View 。 因此,当键盘弹出时,我循环浏览 View 以找出哪个文本字段是第一响应者。
我尝试打印出所有 View 类,它显示 UITextFieldLabel 而不是 UITextField,有人知道这是什么吗?我想找出哪个文本文件获得焦点。
这是我使用的代码。
extension UIView{
func firstResponder() -> UIView?{
if self.isFirstResponder()
{
return self
}
for view in self.subviews
{
if view.isFirstResponder()
{
return view
}
}
return nil
}
}
最佳答案
UITextField
有一个您的 View 可以遵守的协议(protocol)。当选择或编辑文本字段时,您将在委托(delegate)方法中获取该文本字段。
class myView: UIView, UITextFieldDelegate {
var anExampleTextField: UITextField?
override init(frame: CGRect) {
super.init(frame: frame);
self.anExampleTextField.delegate = self
}
//if using interface builder
override func awakeFromNib() {
super.awakeFromNib()
self.anExampleTextField.delegate = self
}
func textFieldDidBeginEditing(textField: UITextField) {
//The selected textfield will be passed here.
}
}
关于ios - 尝试从 subview 获取 UITextField,但获取 UITextfieldLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434139/