[(NSString)成为FirstResponder];?

时间:2011-02-20 01:53:23

标签: iphone

嘿有没有人知道如何做以下事情: [(NSString)becomeFirstResponder]; (其中NSString就是文本字段名称所在的位置)。 任何帮助赞赏。 感谢

2 个答案:

答案 0 :(得分:0)

[(NSString) becomeFirstResponder];会导致异常。

使用

[textField becomeFirstResponder];使您的文本字段成为第一响应者。

其中textFieldUITextField的实例。确保您已为此分配了IBoutlet。

答案 1 :(得分:0)

如果相应的视图控制器具有指向文本字段的实例变量或声明的属性(例如IBOutlet),您可以尝试:

UIViewController *containerViewController;
NSString *fieldName = @"someFieldName";

id field = [containerViewController valueForKey:fieldName];
if ([field isKindOfClass:[UITextField class]])
    [(UITextField *)field becomeFirstResponder];

请记住,Cocoa Touch有一个标记机制,可用于从整个视图层次结构获取特定子视图,而不管IB出口,实例变量或声明的属性。标记是整数可以通过Interface Builder或以编程方式设置,通常每个表示标记的整数都有一个常量。例如:

static const NSInteger kFirstNameTextFieldTag = 42;

UIView *containerView;

field = [containerView viewWithTag:kFirstNameTextFieldTag];
if ([field isKindOfClass:[UITextField class]])
    [(UITextField *)field becomeFirstResponder];

您可以对此进行扩展,以将字段名称(字符串)映射到相应的标记,然后使用该标记获取特定字段。