gpt4 book ai didi

ios - Swift:使用多个文本字段时不调用 textFieldShouldReturn

转载 作者:行者123 更新时间:2023-11-30 12:42:39 27 4
gpt4 key购买 nike

使用多个 textField 时,不会调用

textFieldShouldReturntextFields 设置为数字键盘,它们应将用户输入保存到变量 textFieldEntry,但当用户点击时不会调用 textFieldShouldReturn textField 的。

class TestViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var textFieldOne: UITextField!
@IBOutlet weak var textFieldTwo: UITextField!
@IBOutlet weak var textFieldThree: UITextField!
@IBOutlet weak var textFieldFour: UITextField!

var textFieldEntry: Int?

override func viewDidLoad() {
super.viewDidLoad()
//Looks for single or multiple taps.
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")

// does not recognise tap when inside view
tap.cancelsTouchesInView = false

view.addGestureRecognizer(tap)

self.textFieldOne.delegate = self
self.textFieldTwo.delegate = self
self.textFieldThree.delegate = self
self.textFieldFour.delegate = self
}

func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
var firstResponder = findActiveResponderFrame(view: view)

var testVar: Int?
if firstResponder!.tag == 0 {
testVar = Int(textFieldOne.text!)
print(testVar)
} else if firstResponder!.tag == 1 {
testVar = Int(textFieldTwo.text!)
print(testVar)
} else if firstResponder!.tag == 2 {
testVar = Int(textFieldThree.text!)
print(testVar)
} else if firstResponder!.tag == 3 {
testVar = Int(textFieldFour.text!)
print(testVar)

}
view.endEditing(true)
}


func findActiveResponderFrame(view:UIView)->UIView?{
if view.isFirstResponder {
return view
} else {
for sub in view.subviews {
if let subView = sub as? UIView,
let found = findActiveResponderFrame(view: subView){
return found
}
}
}
return nil
}

最佳答案

仅当用户在文本字段为第一响应者时键入 return 时,才会调用 should return 委托(delegate)方法。您添加了一个以编程方式结束编辑的点击手势 - 这不会调用任何委托(delegate)方法。

您需要重构您的逻辑,并找到调用 dismissKeyboard 时哪个文本字段是第一响应者,然后获取值。

关于ios - Swift:使用多个文本字段时不调用 textFieldShouldReturn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050527/

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