2017-04-04 6 views
1

私は単純な電卓のアプリケーションを作成しています - すべてうまくいきますが、ユーザーがテキストフィールドに新しい番号を入力するか(またはテキストフィールド内に触れるだけで)結果ラベルをクリアしたいと思います。Swift/Xcode - テキストフィールド内をタッチするとラベルを消去する方法は?

今、私はまた、キーボードを解任され(ラベルをクリアするには、touchesBegan機能を使用しています:

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

問題は、ユーザが画面上で触れたところ、それは問題ではないことはもちろんである(例えば誤ってラベルが常にクリアされます)CALCボタンを押していません。

は、ユーザーが「numberField」テキストフィールドに触れたとき、「resultLabel」をクリアする方法はありますか?

ありがとう!

答えて

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最初の事はあなたが使用することができ、あなたのviewcontroller

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

感謝。私はtextFieldでデリゲートを使用してそれを自分自身に設定する必要があるのですか? – RjC

+0

textfield.delegate = self menace UITextFieldクラスを設定すると、View Controllerリファレンスが作成され、次にView Controllerリファレンスを使用してUITextFieldクラスが呼び出されます。 textFieldDidBeginEditing(_ textField:UITextField)のようなものです。 –

1

に法の下に追加UITextFieldDelegate

を実装する

numberField.delegate = self 

セットアップあなたのviewcontrollerを提出についてテキストフィールドユーザーが数字を入力している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 
    } 
} 
関連する問題