swift 3.0 - UITextFieldDelegate 协议扩展不起作用

Posted

技术标签:

【中文标题】swift 3.0 - UITextFieldDelegate 协议扩展不起作用【英文标题】:swift 3.0 - UITextFieldDelegate protocol extension not working 【发布时间】:2016-10-16 13:00:12 【问题描述】:

我尝试在ViewController 中实现UITextFieldDelegate 协议。我从apple tutorial 开始。我实现了相同的方法,例如在教程中,但它不起作用。 (XCODE 8)

class ViewController: UIViewController, UITextFieldDelegate 

    // MARK: Properties

    @IBOutlet weak var recipeNameField: UITextField!
    @IBOutlet weak var recipeNameLabel: UILabel!

    override func viewDidLoad() 
        super.viewDidLoad()

        recipeNameField.delegate = self
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    // MARK: Actions

    @IBAction func onSetDefaultRecipeClick(_ sender: UIButton) 
        recipeNameField.text = "Deafult recipe name"
    

    // MARK: UITextFieldDelegate
    func textFieldShouldReturn(_ textField: UITextField) -> Bool 
        textField.resignFirstResponder()

        print("return")
        return true
    


【问题讨论】:

从键盘打印时是否将“return”打印到控制台? 不。什么都没有发生 好的,viewDidLoad 被调用了吗?您可以使用断点或另一个 print("view did load") 检查它 是的,它被调用了。奇怪... 试试这个:***.com/a/11432348/1689376 【参考方案1】:

您可以尝试删除 textField 委托中的第一行。

【讨论】:

func textFieldShouldReturn(_ textField: UITextField) -> Bool print("return") return true

以上是关于swift 3.0 - UITextFieldDelegate 协议扩展不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入

Swift 2 到 Swift 3.0 运动管理器

swift Swift 3.0中的测量和单位示例

iOS开发系列--Swift 3.0

swift Playground上的Swift 3.0 HTTP基本身份验证

如何使用 Swift 2.3 和 3.0 编译模块?