0

私のヘッダーファイル

MyClass.h
@interface MyClass : UIViewController<UITextFieldDelegate>
{
}
@property (retain, nonatomic) IBOutlet UITextField *customValue;

MyClass.m

- (void)viewDidLoad
{
    customValue.delegate=self;
}
- (void)textFieldDidBeginEditing:(UITextField *)customValue
{
    NSLog(@"custom tips value %@",customValue.text);
}

私の NSLog はメッセージを出力していますが、customValue.text表示されておらず、null になっています。

EDIT 1 ユーザーが値を入力したときにテキストファイルに入力された値を取得する必要があります

4

6 に答える 6

2

textFieldDidBeginEditing名前が示すように、textField で編集を開始すると機能します。

shouldChangeCharactersInRange要件を達成するには、デリゲート メソッドを使用する必要があります。

- (BOOL)textField:(UITextField *)e shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *substring = textField.text;
    substring = [substring stringByAppendingString:string];
    NSLog(@"Text : %@",substring);
    return YES;
}

textFieldDidBeginEditing :

指定されたテキスト フィールドの編集が開始されたことをデリゲートに伝えます。

- (void)textFieldDidBeginEditing:(UITextField *)textField Parameters

テキストフィールド

The text field for which an editing session began.

討論

このメソッドは、指定されたテキスト フィールドがファーストレスポンダになったことをデリゲートに通知します。このメソッドを使用して、デリゲートの状態情報を更新できます。たとえば、このメソッドを使用して、編集中に表示されるオーバーレイ ビューを表示できます。

デリゲートによるこのメソッドの実装はオプションです。可用性

Available in iOS 2.0 and later.

UITextField.h で宣言

textField:shouldChangeCharactersInRange:replacementString:

指定されたテキストを変更する必要があるかどうかデリゲートに尋ねます。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

パラメーター

テキストフィールド

The text field containing the text.

範囲

The range of characters to be replaced 

ストリング

The replacement string. 

戻り値

指定されたテキスト範囲を置き換える必要がある場合は YES 。それ以外の場合は、NO で古いテキストを保持します。討論

ユーザーがテキスト フィールドに新しい文字を入力するか、既存の文字を削除するたびに、テキスト フィールドはこのメソッドを呼び出します。可用性

Available in iOS 2.0 and later.

UITextField.h で宣言

詳細については、UITextFieldDelegateを確認してください

于 2012-12-04T10:55:21.303 に答える
1

これを使って

- (BOOL)textField:(UITextField *)customTipsValue shouldChangeCharactersInRange:(NSRange)range 
 replacementString:(NSString *)string
{
NSLog(@"textfield value %@",customTipsValue.text);
return YES;
}// return NO to not change text
于 2012-12-04T10:23:30.720 に答える
1

これはtextFieldDidBeginEditing:、ユーザーが textField を最初にタッチしたときに呼び出されるためです。

ユーザーが変更した のテキストを取得するにtextFieldは、「Editing Changed」イベントをファイルの所有者の IBAction に接続します。

于 2012-12-04T10:13:23.583 に答える
0

編集モードを開始するときに、クリアテキストフィールドを no に設定するだけです..

- (void)viewDidLoad
{
       customValue.delegate=self;
       [customValue setClearsOnBeginEditing:NO];// Add this line
}
于 2012-12-04T10:15:16.200 に答える
0

このtextField:shouldChangeCharactersInRange:replacementStringが必要になります。

于 2012-12-04T10:17:06.073 に答える
0

その方法に気づいたか

- (void)textFieldDidBeginEditing:(UITextField *)customTipsValue

文字を入力するときではなく、textField の編集を開始するときに呼び出されます。

ここで詳細を確認してください:

UITextField リファレンス

于 2012-12-04T10:14:11.667 に答える