2016-02-11 22 views
5

この質問は、これらの中から複製されません。Swiftでキーボードリターンキーを手動で有効/無効にする方法はありますか?

私は2つのTextFieldsを持っています。

@IBOutlet weak var textField1: UITextField! 
@IBOutlet weak var textField2: UITextField! 
  • textField1リターンキーのようなボタンがあります。

  • textField2には、があります。Returnキーのようにボタンがあります。

textField1

textField2

私は両方のTextFieldが空でないだけであれば第二のTextFieldのゴーボタンを有効にしたいと思います。

someTextField.enablesReturnKeyAutomaticallyTextFieldDelegateと使用しようとしましたが、動作しませんでした。

ありがとうございました。

+0

方法'textField1':次のレスポンダーを' textField2? 'に設定しましたか(以前は "Return"ではなく "Next"を持っています)。単に 'textField1.returnKeyType = UIReturnKeyType.Next'ですか? – dfri

+0

ええ、これは難しいと思います(例: 'textField1'は空ですが' textField2'はありません: 'Go'ボタンが有効になります)。戻るボタンを有効/無効に設定するための文書化されていないobj-cハックを見たことがありますが、それらを迅速に適応させることはできませんでした。また、文書化されていないハッキングを避けることも望みます。 「このスレッド」を参照してください。 – dfri

+0

これは私の最終的な試行です、私は今ベッドに行く必要があります。この最終版では、最初のテキストビューが空である限り、2番目のテキストビューが無効になります。その後、空である限り、「Go」ボタンを2回押してテキストビューを表示します。 – dfri

答えて

5

以下:textField1が空である限り、textField2は無効です。後者が空でない場合、以下のように、我々は、

/* ViewController.swift */ 
import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 
    @IBOutlet weak var textField1: UITextField! 
    @IBOutlet weak var textField2: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // text field delegates 
     textField1.delegate = self 
     textField2.delegate = self 

     // set return key styles 
     textField1.returnKeyType = UIReturnKeyType.Next 
     textField2.returnKeyType = UIReturnKeyType.Go 

     // only enable textField2 if textField1 is non-empty 
     textField2.enabled = false 

     // only enable 'go' key of textField2 if the field itself is non-empty 
     textField2.enablesReturnKeyAutomatically = true 
    } 

    // UITextFieldDelegate 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 

     if (textField1.text?.isEmpty ?? true) { 
      textField2.enabled = false 
      textField.resignFirstResponder() 
     } 
     else if textField == textField1 { 
      textField2.enabled = true 
      textField2.becomeFirstResponder() 
     } 
     else { 
      textField.resignFirstResponder() 
     } 

     return true 
    } 
} 

ランをtextField2を有効にしても、textField2は(.enablesReturnKeyAutomaticallyプロパティを経由して)非空の場合にのみGoボタンを有効にします。

enter image description here

関連する問題