Скрытие клавиатуры в iphone resingFirstResponder не работает - PullRequest
1 голос
/ 28 октября 2011

Я создал UITextField с предупреждением.После ввода на UITextField я хочу скрыть клавиатуру, когда пользователь нажимает кнопку «Готово».

Это мой код.Когда я запускаю его, он запускает метод 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");
}

Ответы [ 3 ]

3 голосов
/ 28 октября 2011

Я думаю, что вам не хватает делегата для вашего UITextField

userInput.delegate = self;

также реализует протокол, и это должно быть.Приветствия.

2 голосов
/ 28 октября 2011

После наложения клавиатуры она закрывает окно с предупреждением. Итак, что я делаю, так это сместил мою тревожную точку зрения чуть выше. Тогда это не будет проблемой, потому что клавиатура больше не закрывает окно предупреждений.

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

Первый параметр CGAffineTransformMakeTranslation () - это координата X, в которую нужно переместить источник представления. Второй параметр - это местоположение Y, в которое нужно переместить источник представления. 130.0 точно не центрирует окно предупреждения между строкой состояния и клавиатурой.

Вам нужно будет добавить эти две строки где-то между экземпляром UIAlertView и строкой [UIAlertView show]. Я положил их прямо перед выставочной линией.

Также добавьте каркас CoreGraphics в ваш проект.

Я думаю, это поможет вам. Спасибо:)

0 голосов
/ 29 июня 2013

Вы также можете использовать этот метод.

Сначала установите метод делегата в вашем .h файле

UITextfieldDelegate с использованием <>

, а затем в вашем файле .m.

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

  [textField resignFirstResponder];

  return YES;

}

Убедитесь, что не забудьте добавить делегат текстового поля, иначе метод - (BOOL) не появится.

...