为什么setDelegate不适用于UITextFieldDelegate,而是通过Interface Builder工作

时间:2011-07-07 22:29:11

标签: objective-c ios ios4 uitextfield uitextfielddelegate

我在下面有以下代码,我无法弄清楚为什么没有调用textFieldShouldReturn方法。当我使用IB创建与委托的连接时,它可以工作,但是当以编程方式完成时,不显示日志语句。我在这里做错了什么?

其次,在textFieldShouldReturn中,一些示例返回YES,一些示例返回NO。 ios文档指定返回YES将提供默认实现。有人可以更详细地解释一下吗?

// .h

@interface GoSocietyLoginController : UIViewController <UITextFieldDelegate> {    
}
- (IBAction)textFieldDoneEditing:(id)sender;
- (BOOL)textFieldShouldReturn:(UITextField *)textField;

@end

// .m

@interface GoSocietyLoginController ()

@property (nonatomic,retain) IBOutlet UITextField   *login;
@property (nonatomic,retain) IBOutlet UITextField   *password;

@end


@implementation GoSocietyLoginController

@synthesize login;
@synthesize password;

    - (void)viewDidLoad
    {    
        [super viewDidLoad];
        [login setDelegate:self];
        [password setDelegate:self];
    }

    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        NSLog(@"Hello World");

        if ([textField isEqual:login]) {
            [password becomeFirstResponder];
        }

        return NO;
    }

1 个答案:

答案 0 :(得分:0)

根据您发布的代码,我觉得您在标题中声明了这些商店:

IBOutlet UITextField *login;
IBOutlet UITextField *password;

请务必声明它们并在IB中设置连接。