未调用UITextFieldDelegate的textField方法

时间:2016-09-23 11:54:25

标签: swift xcode

我想我可能做了一些愚蠢的事情,但无论如何我都会问这个问题。 我看不到正在调用的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。 如果这是一个愚蠢的问题,那么任何帮助都会得到很多的赞赏和批评 - 我希望这是一个问题。

2 个答案:

答案 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