Вопрос

Я дважды проверил все соединения в файле 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) и добавил все элементы пользовательского интерфейса к нему в интерфейсе Builder. UIControl's touchDown Метод подключен к backgroundTap метод.

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

Таким образом, клавиатура не удаляется, как если она должна. Не уверен почему.

Спасибо за помощь! Teja.

Это было полезно?

Решение

DyingCactus указал на вашу ошибку. Вы заменяете NIB-версию элемента управления с совершенно другим управлением, теряя указатель на один в NIB. Когда вы называете resignFirstResponder, Вы называете его на своем дублированном объекте, а не тот, который на самом деле на экране. Избавиться от alloc а также init Призывы к вещам проводятся в нибе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top