Ховання клавіатури в iphone resingFirstResponder Не працює

Я створив UITextField з виглядом попередження. Після набору тексту на UITextField я хочу приховати клавіатуру, коли користувач натискає кнопку "done".

Це мій код. Коли я запускаю це, він потрапляє в метод hideKeyBoard (я дізнався, використовуючи NSLog і налагодження). Але цей код не приховує клавіатуру. Будь ласка, допоможи мені.

- (IBAction)doAlertInput:(id)sender
{
    UIAlertView *alertDialog;

    alertDialog = [[UIAlertView alloc] 
                   initWithTitle: @"Please Enter Your Email Address!" message:@"You won’t see me" 
                   delegate: self cancelButtonTitle: @"Ok" otherButtonTitles: nil];

    userInput=[[UITextField alloc] initWithFrame: CGRectMake(12.0, 70.0, 260.0, 25.0)];

    userInput.returnKeyType = UIReturnKeyDone;

    [userInput addTarget:self action:@selector(hideKeyBoard) forControlEvents:UIControlEventEditingDidEndOnExit];

    [userInput setBackgroundColor:[UIColor whiteColor]];

    [alertDialog addSubview:userInput];

    [alertDialog show];
    [alertDialog release];
}

-(void)hideKeyBoard
{
    [userInput resignFirstResponder];
    NSLog(@"Key Board Hid");
}
1

3 Відповіді

Я думаю, ви не пройшли делегацію для вашого UITextField

userInput.delegate = self;

також реалізує протокол, і це має бути. Підбадьорює

3
додано

Після розгортання клавіатури накриває панель сповіщень. Тож, що я роблю, це переміщення мого попередження виглядає трохи вище. Тоді це не буде проблемою, оскільки клавіатура більше не охоплює попередження.

CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 130.0);
[myAlertView setTransform:myTransform];

Першим параметром CGAffineTransformMakeTranslation() є координата X для переміщення походження виду до. Другий параметр - це Y-місцеположення для переміщення походження зору до. 130.0 точно не відображає режим попередження між рядком стану та клавіатурою.

Вам потрібно буде додати ці два рядки десь між інстанцією UIAlertView та рядком [UIAlertView show]. Я розміщую їх прямо перед шоу-лінією.

Також додайте структуру CoreGraphics до вашого проекту.

Я думаю, це допоможе вам. Дякую :)

2
додано

Ви також можете скористатися цим методом.

Спочатку встановіть метод делегування у вашому .h-файлі

UITextfieldDelegate using <>

а потім у вашому .m-файлі.

- (BOOL) textFieldShouldReturn: (UITextField *) textField    {

  [textField resignFirstResponder];

  return YES;

}

Переконайтеся, що не забудьте додати делегування текстове поле, в іншому випадку метод (BOOL) не з'явиться.

0
додано