2017-04-04 35 views
1

我正在創建一個簡單的計算器應用程序 - 一切工作正常,但我想清除結果標籤時,用戶在文本字段中輸入一個新的數字(或只是接觸一個文本框)。Swift/Xcode - 如何在文本框內觸摸時清除標籤?

現在我使用的touchesBegan功能來清除標籤(也駁回了鍵盤:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view.endEditing(true) 
    resultLabel.text = "" 
} 

問題當然是不要緊用戶觸摸屏幕上(例如一不小心沒有擊中計算按鈕),標籤將永遠被清除。

有沒有一種方法,以清除「resultLabel」當用戶觸摸「numberField」文本框?

謝謝!

回答

1
@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 = "" 
     } 
} 
1

對於你需要給委託給你的文字清晰resultlable第一件事情提起

numberField.delegate = self 

設置你的viewcontroller實施UITextFieldDelegate

添加下面的方法來你viewcontroller

class viewcontroller: UIViewController,UITextFieldDelegate { 
    func textFieldDidBeginEditing(_ textField: UITextField) { 
     resultLabel.text = "" 
    } 
} 
+0

謝謝。你能用一句話來解釋嗎?我必須在textField上使用委託並將其設置爲self? – RjC

+0

當你設置textfield.delegate =自我威脅UITextField類有你的視圖控制器引用,然後通過使用你的視圖控制器中寫入你的視圖控制器引用UITextField類調用方法。像textFieldDidBeginEditing(_ textField:UITextField)。 –

1

您可以使用文本字段在用戶輸入數字的textField上委託方法。

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 
    } 
}