2010-12-11 3 views
1

Я новичок в iphone;отключить клавиатуру после ввода текста в текстовое поле

что я сделал, это создание 10 меток с соответствующими текстовыми полями.

, когда я нажимаю на клавиатуру текстового поля, открыта.

Но он охватывает нижние 4 текстовых поля.

Я не могу ввести текст в эти поля.

Мне нужно, когда я нажимаю текстовое поле перед экраном клавиатуры, поднимается вверх.

Теперь я могу войти в эти текстовые поля.

Как я могу это сделать.

Благодарим u заранее.

ответ

1

Как писал Jumhyn, сделайте UIViewController делегатом всех текстовых полей. Затем назначьте теги текстовых полей от 0 до 9, сверху вниз. Затем реализовать следующий метод в контроллере:

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    self.view.bounds = CGRectOffset(self.view.bounds, 0, textField.tag * 50); 
    [[self.view viewWithTag: textField.tag + 1] becomeFirstResponder]; 
} 

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

+0

Благодарим q за повтор, я пробую это, но никаких изменений в моем представлении. – MaheshBabu

+0

Ознакомьтесь с этой статьей, чтобы лучше понять эту технику: http://cocoawithlove.com/2008/10/sliding-uitextfields-around-to-avoid.html – Costique

+0

Я думаю, что код ура правильный, и я устанавливаю NSlogs в функции, которые находятся выше ссылка. Но эти функции не запускаются. что мне нужно сделать, чтобы запустить эти события – MaheshBabu

0

Сделать UIViewController, который обрабатывает текст рассматривает UITextFieldDelegate:

@interface TextFieldViewController : UIViewController <UITextFieldDelegate> { 

затем в textFieldShouldBeginEditing: метод в файле .m, добавьте код, который перемещает текстовые поля вверх. Например:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    myTextField3.frame = CGRectMake(myTextField3.frame.origin.x, myTextField3.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField3.frame.size.width, myTextField3.frame.size.height); 

    myTextField4.frame = CGRectMake(myTextField4.frame.origin.x, myTextField4.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField4.frame.size.width, myTextField4.frame.size.height); 

    myTextField5.frame = CGRectMake(myTextField5.frame.origin.x, myTextField5.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField5.frame.size.width, myTextField5.frame.size.height); 

    myTextField6.frame = CGRectMake(myTextField6.frame.origin.x, myTextField6.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField6.frame.size.width, myTextField6.frame.size.height); 

    return YES; 
} 
+0

Как текстовые поля получают сообщение, если они скрыты клавиатурой? Кроме того, метод должен вернуть YES. – Costique

+0

Когда изображение загружается, клавиатура не будет присутствовать, и поэтому любое текстовое поле может быть использовано. Это переместило бы все текстовые поля, которые, по его словам, были покрыты (нижняя четверка) на любую сумму, которую он хочет. Также просто интересно, в чем преимущество использования CGRectOffset в отличие от переназначения кадра? – Jumhyn

Смежные вопросы