1

私は次の方法を使用しています:

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

以前は、現在のテキストフィールドを見つけるために、次のように書くことができました。

if (textField == self.textPlaceID)
{
    //Do something
}

私の名前をtextField文字列として取得する方法はありますか?ユーザーが入力した内容を取得するように求めているのではなくtextField、ifのプロパティ名を取得できるようにしたいと思います。次に、他の文字列と連結するために必要です。私は動的なメソッド呼び出しを行うことに取り組んでいます。

4

3 に答える 3

4

UITextField■「名前」はありません。テキストフィールドにaを指定して、tagそれを使用できます。

また、同等の値ではなく、同じオブジェクト(pointer == pointer)を参照している場合にのみtrueが返されることに注意してください。

タグの使用方法は次のとおりです。InterfaceBuilderで、各テキストフィールドにタグを付けるか、プログラムでテキストフィールドを作成する場合はtextField.tag = someInt;、コードを読みやすくするために通常はマクロを使用するように設定します。

#define kNameTextField 2
#define kAddressTextField 3

...

if (textField.tag == kNameTextField) ...

そのようなフィールドがたくさんあるので、私は列挙型を好みます:

typedef enum {
  kNameTextField = 2, 
  kAddressTextField, 
  kPhoneTextField // etc
} Fields;
于 2012-11-01T14:03:12.573 に答える
1

次のコードを使用して、プロパティの名前(この場合はtextFieldプロパティ)を取得できます。

-(NSString *)propertyName:(id)property {  
    unsigned int numIvars = 0;
    NSString *key=nil;
    Ivar * ivars = class_copyIvarList([self class], &numIvars);
    for(int i = 0; i < numIvars; i++) {
    Ivar thisIvar = ivars[i];
    if ((object_getIvar(self, thisIvar) == property)) {
        key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
        break;
    }
} 
    free(ivars);
    return key;
} 

インポートすることを忘れないでください:

#import <objc/runtime.h>

電話するだけです:

NSLog(@"name = %@", [self propertyName:self.textField]);

ソース

于 2012-11-01T14:23:05.397 に答える
0

主に各textFieldsに一意のタグを割り当てます(例:1,2,3 .....)textFieldタグの0は避けてください

-(void)viewDidLoad{
NSDictionary *dictionary ; //declare it in .h interface

dictionary =  [NSDictionary dictionaryWithObjectsAndKeys:@"textPlaceID",[NSNumber numberWithInt:1], @"textPlaceID2",[NSNumber numberWithInt:2],nil]; // add textField as object and tag as keys
}

さらに遠く..

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

NSString *textFieldPropertyName = [dictionary objectForKey:[NSNumber numberWithInt:textField.tag]];

}
于 2012-11-01T14:04:21.680 に答える