UITextField“不是结构或联合”?

时间:2010-12-15 05:35:09

标签: iphone objective-c

在我的应用中,我试图在用户输入文本时对字符串执行操作。在viewDidLoad方法中:

[textView addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

以下是该方法的声明:

-(void)textFieldDidChange:(id)sender {
 sender = (UITextField *)sender;
 [self operationForInput:sender.text inTextField:sender];
}

但是当我尝试编译时,它给了我“请求成员'文本'而不是联合结构上的错误”错误。我做错了什么?

2 个答案:

答案 0 :(得分:3)

本地变量sender的类型为id。您正在尝试访问text sender的{​​{1}}属性,该属性在id中不存在(它是UITextField的属性)。

sender = (UITextField *)sender无用 - 您从idUITextField*转发,但是当您分配回sender时,您正在向上转回{{1} }}。您应该将代码更改为:

id

答案 1 :(得分:0)

你应该使用类似的东西:

-(void)textFieldDidChange:(UITextField *)textField {
    if(textField == textField1) {
        /* do something for textfield 1 */
    }
    if(textField == textField2) {
        /* do something for textfield2 */
    }
}

确保在标题中定义了textField。

此外,如果您使用上述代理,则不需要使用[textView addTarget...