我正在创建一个简单的计算器应用程序 - 一切正常但我想在用户在文本字段中输入新数字时清除结果标签(或者只是触摸文本字段内部)。
现在我正在使用touchesBegan函数来清除标签(这也解除了键盘:
const diskAdapter = require('sails-disk');
const postgresAdapter = require('sails-postgresql');
module.exports = {
adapters: {
'default': diskAdapter,
disk: diskAdapter,
postgres: postgresAdapter
},
connections: {
myLocalDisk: {
adapter: 'disk',
migrate: 'alter'
},
localhost: {
migrate: 'safe',
adapter: 'postgres',
database: 'intellinote',
host: 'localhost',
user: 'postgres',
password: '',
port: 5432
}
},
defaults: {
}
};
问题当然是用户触摸屏幕的位置并不重要(例如,意外没有点击计算按钮),标签将始终被清除。
有没有办法清除" resultLabel"当用户触摸" numberField"文本字段?
谢谢!
答案 0 :(得分:2)
首先要明确resultlable
,您需要将代表委托给您的文本
numberField.delegate = self
设置viewcontroller
以实施UITextFieldDelegate
将以下方法添加到您的viewcontroller
class viewcontroller: UIViewController,UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
resultLabel.text = ""
}
}
答案 1 :(得分:2)
您可以在textField上使用文本字段Delegate方法,用户输入数字。
textField.delegate = self
textField.tag = 0
在textField中添加标签,并在didBeginEditing中进行检查。
func textFieldDidBeginEditing(textField: UITextField) {
if textField.tag == 0 //Or whatever tag you attach{
//Do the required task
}
}
答案 2 :(得分:2)
@IBOutlet weak var resultLabel: UILabel!
@IBOutlet weak var numberField: UITextField!
override func viewDidLoad(){
super.viewDidLoad()
numberField.delegate = self
}
extension viewcontroller: UITextFieldDelegate {
func textFieldDidBeginEditing(textField: UITextField) {
resultLabel.text = ""
}
}