如何在不使用标记的情况下识别UItextFields。

时间:2014-09-10 07:25:46

标签: ios objective-c uitextfield

我为不同类型的输入(日期,选择器等)创建不同的UITextField。 我已经使用标签来识别每种类型的不同textField。

如何识别没有标签的文本字段。 我可以为textFields分配字符串标识符吗?

4 个答案:

答案 0 :(得分:1)

您可以添加CATEGORY,创建任何字符串方法,例如 stringTag 等。您的问题已解决。

您可以使用UITextField's attributedText, placeholder属性存储字符串标记进行标识。但是在确定“String TAG”后确保隐藏它们 这不是推荐的解决方案,但它可以提供帮助。

答案 1 :(得分:0)

我认为你只能通过使用标签来识别它们。

也许您可以使用1000,2000,3000作为类型,使用1,2,3来识别。

因此标签1001是类别1000中的第一个,1100是类别1000中的第100个等...

答案 2 :(得分:0)

如果您已创建,也可以将UITextField与其插座进行比较。您可以将字符串标识符分配给textFields,如下所示

#import <objc/runtime.h>

static char kTextFieldAssociatedKey;

objc_setAssociatedObject(yourTextField,
                         &kTextFieldAssociatedKey,
                         aStrKey,
                         OBJC_ASSOCIATION_RETAIN_NONATOMIC);




- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSString *aStrKey = objc_getAssociatedObject(textField, &kTextFieldAssociatedKey);
    objc_removeAssociatedObjects(textField);
    NSLog(@"%@", aStrKey);
    return [textField resignFirstResponder];
}

答案 3 :(得分:0)

识别没有Tag的文本字段的另一种方法是

NSArray *arySubViews=[self.view subviews];

for (int i=0;i<arySubViews.count; i++){

    id subObj= [arySubViews objectAtIndex:i];

    if ([subObj isKindOfClass:[UITextField class]]) {
        /// At this place you identify your Text Field without tag

        // you can identify through Title or etc.
        UITextField *tfObj=(UITextField*)subObj;    
     }
}

Source code as image