Swift / Xcode - 如何在文本字段内触摸时清除标签?

时间:2017-04-04 12:30:57

标签: ios swift xcode

我正在创建一个简单的计算器应用程序 - 一切正常但我想在用户在文本字段中输入新数字时清除结果标签(或者只是触摸文本字段内部)。

现在我正在使用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"文本字段?

谢谢!

3 个答案:

答案 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 = ""
        }
 }