在我的应用中,我试图在用户输入文本时对字符串执行操作。在viewDidLoad方法中:
[textView addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
以下是该方法的声明:
-(void)textFieldDidChange:(id)sender {
sender = (UITextField *)sender;
[self operationForInput:sender.text inTextField:sender];
}
但是当我尝试编译时,它给了我“请求成员'文本'而不是联合结构上的错误”错误。我做错了什么?
答案 0 :(得分:3)
本地变量sender
的类型为id
。您正在尝试访问text
sender
的{{1}}属性,该属性在id
中不存在(它是UITextField
的属性)。
行sender = (UITextField *)sender
无用 - 您从id
向UITextField*
转发,但是当您分配回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...
。