iphone SDK:不知道为什么我没有收到UITextField事件?

jp *_*nce 1 iphone objective-c

我已经定义了控制器来接收事件.

@interface salesViewController : UIViewController
    <UITextFieldDelegate>{
Run Code Online (Sandbox Code Playgroud)

但是,我的事件都没有发射.

 - (void)textFieldDidBeginEditing:(UITextField *)textField
  {
 //this is not getting called
  }
Run Code Online (Sandbox Code Playgroud)

在Interface Builder中,我将TextField委托分配给salesView.

我错过了什么?

Jef*_*bes 5

您必须正确设置委托.您观察协议,但您需要这样做:

@interface YourController : UIViewController<UITextFieldDelegate>   {
    IBOutlet UITextField* field;
}
@end


@implementation YourController
-(void)viewDidLoad
{
    [field setDelegate:self];
}
Run Code Online (Sandbox Code Playgroud)

你会收到这些活动.或者,您也可以在Interface Builder中设置委托,以及在loadView中以编程方式执行,分配字段和设置委托.

此外,尝试尽可能少地使用NSNotificationCenter.除非您和相关对象之间没有真正的直接路径,否则通知会有些过时.只是对上面答案的一个小评论.