Swift 方法不会覆盖其超类中的任何方法

Swift method doesn't override any method from its superclass

我对 Swift 比较陌生,我正在学习一些基本教程,但我似乎对某些尝试允许用户按 return 以最小化键盘的方法有疑问或者点击键盘,键盘就会消失,我明白为什么我会收到这些错误,但不知道如何修复它,我觉得 Swift 的较新版本中可能发生了一些变化,我是因为他使用的是比我旧的版本,所以有人可以解释一下如何解决这两个错误吗?任何帮助将不胜感激,这是我的源代码:(第一个错误,类型 'viewController' 的值没有成员 'text',其次,touchesBegan 方法没有覆盖其超类中的任何方法)

import UIKit

class ViewController: UIViewController {

@IBAction func buttonPressed(sender: AnyObject) {

   label.text = textArea.text

}

@IBOutlet weak var textArea: UITextField!

@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.text.delegate = self

}

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

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    self.view.endEditing(true)
}

func textFieldShouldReturn(textField: UITextField!) -> Bool {

    textField.resignFirstResponder()

    return true

}

}

在您的情况下更改以下内容:

而不是:

self.text.delegate = self

更改:

self.textArea.delegate = self


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    }

对于委托,这样添加

class ViewController: UIViewController, UITextFieldDelegate {
}

根据您发布的图片,您在这里有 2 个问题:

1) 您正在使用的方法 touhesBegan is not correct:

正确一个:

func touchesBegan(_ touches: Set<UITouch>, withEvent event: UIEvent?)

你的:

func touchesBegan(touches: NSSet, withEvent event: UIEvent)

我认为您需要 UITextField 的委托,所以这个不是 corerct:touchesBegan 是 UIReponder 委托的一种方法,而不是 UITextFieldDelegate 的方法。

Here 您可以找到 UITextFieldDelegate 的参考。

2) 您的代码中不存在变量 text。我认为您想改用 textArea

希望这对您有所帮助,编码愉快!