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
。
希望这对您有所帮助,编码愉快!
我对 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
。
希望这对您有所帮助,编码愉快!