2011-07-14 13 views
2

次のコード行を使用すると、ユーザーがテキストビューで入力した内容を検出できることがわかります。ユーザーがUITextFieldに入力したかどうかを検出する

if ([[textView text] isEqualToString:@"") 

ユーザーがテキストFIELDに何かを入力したかどうかを検出したいが、これはテキストフィールドでは機能しません。私は何を変えるべきですか?ご協力いただきありがとうございます!

+1

コロンと括弧が欠けているようですが、それ以外にテキストフィールドでは機能しないのはなぜですか? – Joe

+0

http://stackoverflow.com/questions/7010547/uitextfield-text-change-event変更を検出するのに役立ちます – Dejell

答えて

11

UITextFieldDelegateはこれを見つけるための好ましい方法です。

- (void)textFieldDidBeginEditing:(UITextField *)textField - ユーザがキーを打つ史上ときに、この方法はあなたを教えてくれます - これが唯一それがファーストレスポンダ/キーフィールドとなっていることを教えてくれる、これはユーザーが値

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)stringを修正することを保証するものではありません。テキストを変更するには、複数の文字が文字列内にあるか、1つ上のバックスペースか、選択の削除によって文字列が空になります...

- (void)textFieldDidEndEditing:(UITextField *)textField - これは確認する共通の場所ですフィールド内の値とモデルの値を比較して、編集が行われたかどうかを調べます。フィールドが「キー」状態を放棄したときにのみ呼び出されます。ユーザーがボタンをタップすると、ビュー全体が表示されなくなり、関心のあるフィールドが「キーフィールドには、」テキストの長さの代わりに、内容を確認することができます/ロジック

+0

ユーザーがフィールドに1文字を挿入しているかどうかを知りたい場合はどうすればよいですか? textFieldDidEndEditingは、前述のようにフィールド – Dejell

+0

を離れるときにのみ呼び出されているので、2番目の方法で注意する必要があります。 – bshirley

+0

これは正しい方法ではありません。 http://stackoverflow.com/questions/7010547/uitextfield-text-change-eventは変更を検出するための正しいものです – Dejell

1

UITextFieldの内容を取得するには、UITextViewと同じ方法で、「text」プロパティにアクセスします。以下のコードは、テキストフィールドが空でない場合です。

if (![someTextField.text isEqualToString:@""]) 
    { 
     NSLog(@"someTextField is not empty"); 
    } 

また、その詳細については、マニュアルを参照してくださいなど、ユーザーが入力を開始したときに検出するために、UITextFieldのデリゲートを使用してタイピングを停止することができます。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/doc/uid/TP40006991

最後に、ここでのUITextFieldのドキュメントへのリンクがあります。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/doc/uid/TP40006888

+0

私はそれを試しても機能しませんでした。私はテキストビュー(私はそれで遊んでいた)のリンクを忘れて、私は何が起こったかを理解するまで興奮していた。その後、私はテキストフィールドを再リンクし、それは動作しませんでした...また、ユーザーが入力を開始し、すべてを削除することができます...お試しいただきありがとうございます! –

+0

これは、UITextFieldからテキストを取得するための唯一の正しい方法です。それが動作していない場合は、あなたの最後のどこかにエラーがあります。 –

0

彼らのコール順に慣れるために、関連する実装にブレークポイントを設定するために役立つことができます(第一の方法を参照してください)

if ([[textView text] length]==0) 
関連する問題