2017-04-05 12 views
4

私はtextFieldのばかげた問題に直面しています。私は2つのテキストフィールドtfAとtfBを持っています。私は代理人を設定しました。もしtfAをクリックすれば何かが印刷され、それが印刷され、tfBをクリックするとキーボードが表示されますが、うまく動いていますが、tfAを再度クリックすると、そこに与えられた条件に従って却下してください。しかし、キーボードもここでは却下されません。self.view.endEditing(true)はここでは働いていません。コードはスクリーンショットで以下に示されていますが、私はここで間違っていますか?UITextFieldのresignFirstResponderは動作していませんself.view.endEditing()

CODE:スウィフト3

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 
    @IBOutlet weak var tfA: UITextField! 
    @IBOutlet weak var tfB: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tfA.delegate = self 
     tfB.delegate = self 
    } 

    func textFieldDidBeginEditing(_ textField: UITextField) { 
     if textField == tfA{ 
      print("TFA Clicked") 
      textField.resignFirstResponder() 
      self.view.endEditing(true) 
     }else{ 
      tfB.becomeFirstResponder() 
     } 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 

     return true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

スクリーンショット

enter image description here

+0

削除 'textField.resignFirstResponderを()'としてみてください:textFieldShouldBeginEditingと交換し、あなたのtextFieldDidBeginEditing方法を移動します。 tfBから戻ってくると、そのキーボードはアクティブです。したがって、 'self.view.endEditing(true)'は、ビュー内でアクティブなキーボードを閉じるのに十分です。 – ron27

+0

tfAを編集可能にしたくない場合は、単純に 'tfA.isEnabled = false'を実行しないでください。 –

+0

@ ron27私は試しましたが、動作しません。 –

答えて

6

この

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField == tfA 
    { 
     self.view.endEditing(true) 
     tfaAction() 
     return false 
    } 
    else 
    { 
     return true 
    } 
} 
func tfaAction(){ 

} 
+0

あなたの努力のおかげでありがとうございますが、どちらもうまくいきません。私の問題は、tfBキーボードをクリックすると表示され、tfAキーボードをクリックすると解消されます。 また、tfAを最初にクリックした場合、キーボードは表示されません。しかし、これで私はtfAをクリックするアクションが必要です。 –

+0

パーフェクト、それに応じて働く..あなたの努力のおかげで.. –

4

再してみてください

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField == tfA{ 
    print("TFA Clicked") 
    self.view.endEditing(true) 
    return false 
    }else{ 
    return true 
    } 
} 
+0

パーフェクト、それに応じて働く..あなたの努力に感謝.. –

関連する問題