0

我已经仔细检查了 nib 文件中的所有连接。我的代码 -

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"iphone_bg_login.png"]];
    self.title = @"Login screen";
    loginTxt = [[UITextField alloc] init];
    pwdText = [[UITextField alloc] init];
    loginFailedTxt = [[UILabel alloc] init];
    loginBtn = [[UIButton alloc] init];
    navAppDelegate = (NavAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    navAppDelegate.navController.navigationBarHidden = YES;
    //NSArray *subVs = (NSArray *) [self.view subviews];
    [super viewDidLoad];
}

我在界面生成器中使用了一个子类UIView (UIControl)并将所有 UI 元素添加到它。UIControl's touchDown方法连接到backgroundTap方法。

-(IBAction) backgroundTap:(id) sender {
    [loginTxt resignFirstResponder];
    [pwdText resignFirstResponder];
    //[[UIApplication sharedApplication] becomeFirstResponder];
        //[sender resignFirstResponder];
} 

所以键盘没有像它应该的那样被移除。不知道为什么。

谢谢您的帮助!泰迦。

4

1 回答 1

2

DyingCactus 指出了您的错误。您正在用完全不同的控件替换控件的 NIB 版本,失去指向 NIB 中的那个的指针。当您调用 时resignFirstResponder,您是在复制对象上调用它,而不是实际在屏幕上的对象。摆脱在 NIB 中连接的东西allocinit

于 2010-04-19T03:43:01.200 回答