我想我可能做了一些愚蠢的事情,但无论如何我都会问这个问题。 我看不到正在调用的UITextFieldDelegate方法textField。我创建了一个带有print语句的简单程序,显示所有其他委托方法被称为okay,但不是这个。这是程序代码:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
//MARK: Properties
@IBOutlet weak var testTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
testTextField.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
print("textFieldShouldReturn")
textField.resignFirstResponder()
return true
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
print("textFieldShouldBeginEditing")
return true
}
func textFieldDidBeginEditing(textField: UITextField) {
print("textFieldDidBeginEditing")
print("Leaving textFieldDidBeginEditing")
}
func textField(textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print("textField")
print("Leaving textField")
return true
}
func textFieldDidEndEditing(textField: UITextField) {
print("textFieldDidEndEditing")
print("textField = \(textField.text)")
print("Leaving textFieldDidEndEditing")
}
}
坚持到底。我有一个ViewController,在Interface Builder中添加了UITextField。输入文本显示正在调用其他委托方法。我正在使用Xcode 7.3.1。 如果这是一个愚蠢的问题,那么任何帮助都会得到很多的赞赏和批评 - 我希望这是一个问题。
答案 0 :(得分:6)
我认为你因为功能上的拼写错误而面临这个问题。
这就是你正在使用的:
func textField(textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {...}
这就是函数的用法:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {...}
答案 1 :(得分:0)
只需在ViewDidLoad中复制并粘贴此行,然后尝试使用此textField
let txtField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 400.00, height: 30.00));
txtField.delegate = self