我正在使用 Xcode 和 Interface Builder 为 iPhone 创建一个简单的项目。虽然我了解什么是委托,但我在使用它时遇到了问题。
我的界面中有一个 UITextField 。当用户点击它时它会显示键盘,但我需要手动编程如何隐藏键盘。可以使用委托来完成。所以在 IB 中,我从库中获取对象,将它的类名指定为 Control1Delegate,然后将我的文本字段中的委托出口连接到这个 Control1Delegate。我也有这个 Control1Delegate 类的 .m 和 .h 文件:
Control1Delegate.h
@interface Control1Delegate : NSObject <UITextFieldDelegate> {
}
- (BOOL) textFieldShouldReturn:(UITextField *)textField;
@end
Control1Delegate.m
#import "Control1Delegate.h"
@implementation Control1Delegate
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
@end
但这不起作用。运行时,它永远不会到达 textFieldShouldReturn 方法,或者在没有 msg 或 EXEC_BAD_ACCESS 的情况下崩溃。有趣的是,当我将方法移动到控制器文件(已生成一个向导)并从 UITextField 连接到此控制器(文件所有者)时,一切都按预期工作。我看到大多数苹果代码教程将委托方法放入随机对象而不是单独的类中 - 我想知道为什么。我不能在单独的班级中有代表吗?
我在这里缺少什么?一些空指针?对象生命周期?