我正在使用Xcode和Interface Builder爲iPhone創建一個簡單的項目。雖然我瞭解代表是什麼,但我在使用它時遇到問題。作爲外部類的委託在Objective-C
我在我的界面中有一個UITextField。它在用戶點擊時顯示鍵盤,但我需要手動編程如何隱藏鍵盤。它可以使用代表完成。所以在IB中,我從庫中獲取Object,將它的類名稱設置爲Control1Delegate,然後將我的文本字段的委託出口連接到此Control1Delegate。我也有.M和.h文件這個Control1Delegate類:
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連接到該控制器(文件的所有者)時,一切都按預期工作。我看到大多數蘋果代碼教程將委託方法放入隨機對象,而不是單獨的類 - 我想知道爲什麼。我不能在單獨的班級中安排委派嗎?
我在這裏錯過了什麼?一些空指針?對象生命週期?
非常感謝!我知道我打了一個零對象,但我無法弄清楚如何保留它。從這個答案中可以看出,儘管可能很明顯,但您必須將IB剛剛創建的委託出口與您所在的委託對象連接起來。 – rattkin 2009-01-20 19:25:00