我对使类符合UITextFieldDelegate很好奇,在过去我总是添加它来支持对协议中定义的方法的访问。然而,这一次我忘了添加它,后来才意识到它丢失了。我的问题是,为什么它在有或没有它的情况下工作,我认为它是正确访问协议方法所必需的?
@interface MyController : UIViewController <UITextFieldDelegate> {
UITextField *text_001;
}
@property(nonatomic, retain) IBOutlet UITextField *text_001;
@end或者:
@interface MyController : UIViewController {
UITextField *text_001;
}
@property(nonatomic, retain) IBOutlet UITextField *text_001;
@end通过以下方式:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"Return: ... ");
[textField resignFirstResponder];
return YES;
}干杯加里
发布于 2010-08-28 23:51:00
委托声明实际上只是作为编译器的提示;显然,您仍然需要实现底层方法。然而,它的主要目的是让编译器在赋值时再次检查你。如果您尝试手动(在代码中,而不是在IB中)分配一个未声明的委托,您将经常收到编译器警告。
因为Objective-C对大多数东西都使用了鸭子类型(如果它走起来像鸭子,叫起来像鸭子;如果它响应-textFieldShouldReturn:,等等),那么你是非常安全的。
https://stackoverflow.com/questions/3591354
复制相似问题