【问题标题】:How to use DidEndEditing on textfield on OS X (swift)如何在 OS X 上的文本字段上使用 DidEndEditing (swift)
【发布时间】:2015-11-22 14:22:48
【问题描述】:

这里我要实现的是在我按下回车键后,如果文本字段的文本与单词 January 匹配,则打印正确,如果不匹配,则打印错误。

但是当我按下返回键时,什么都没有打印出来。

谁能帮我写一个关于如何使用 DidEndEditing 的示例代码?

@IBOutlet weak var wordTextfield: NSTextField!
let monthEN = "January"

func textFieldDidEndEditing(wordTextfield: NSTextField) {
    if wordTextfield.stringValue == monthE{
        print("right")
    }else{

        print("wrong")
    }
}

【问题讨论】:

  • 您的代码中可能缺少一个循环...如果您想检查每个可能的英语月份(据我所知),然后添加一些循环。或者更清楚地说明您的问题...
  • @Jean-Baptiste Yunès 我在声明中添加了一些代码。你能帮我解决这个问题吗?
  • “此代码不起作用”是什么意思?我假设根本没有调用该方法,但是您需要为您的问题添加描述性细节并准确指定“不起作用”的内容。怎么了?你预计会发生什么?
  • @nhgrif 当我按下返回键时,什么都没有打印出来。
  • 您需要用详细信息更新问题。

标签: swift macos nstextfield


【解决方案1】:

os x 中的 textFieldDelegate 在 Swift 4 中是这样工作的:

class MainViewController: NSViewController, NSTextFieldDelegate {

      @IBOutlet weak var textFileViewLabel: NSTextField!

      override func viewDidLoad() {
        super.viewDidLoad()

        self.textField.delegate = self
     }



     override func controlTextDidChange(_ obj: Notification) {
         //Here check the changes of textField input
     }

    override func controlTextDidEndEditing(_ obj: Notification) {
        //Here check the changes of textField input

    }
}

【讨论】:

    【解决方案2】:

    大概,您来自 iOS 背景,并且刚刚进入 OS X。我没有太多 OS X 开发经验,但似乎textFieldDidEndEditing(_:) 不是NSTextFieldDelegate 协议的一部分。

    NSTextFieldDelegate 只是NSControlTextEditingDelegate 的扩展,并没有添加任何方法。

    考虑到这一点,看起来我们可能需要在 OS X 上实现 control(_:textFieldShouldEndEditing:) 以实现类似行为,或者可能需要实现 control(_:isValidObject:)。但无论哪种方式,重要的是要注意NSTextField 永远不会调用textFieldDidEndEditing(_:)——这完全来自 iOS。

    有关更多信息,我建议您查看the Apple documentation for NSControlTextEditingDelegate

    另外值得一提的是,确保您确实设置了文本字段的 delegate 属性。

    【讨论】:

    • 'func textDidEndEditing(_ notification: NSNotification)' 看了文档,还是不知道怎么用,能不能给我写个示例代码?
    • 1.我不知道您的评论是什么意思,但它与问题中的代码不同。 2.为了接收通知,您必须注册通知。
    【解决方案3】:

    不要忘记将委托设置为数据所在的位置(通常设置为自身)。 即 wordTextfield = self(在 ViewDidLoad 中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2017-07-30
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多