2012-01-27 3 views
4

Хорошо, поэтому моя цель состоит в том, что когда клавиша Done нажата после ввода чего-то в UITextField, она должна запускать одно из моих действий, но не отбрасывать клавиатуру.Как изменить поведение кнопки «Готово» на клавиатуре?

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

Сообщите мне, если вам нужно уточнить подробное описание.

ответ

9

Попробуйте установить textField.delegate = self в коде, а также в соответствии с протоколом UITextFieldDelegate. Затем реализовать этот метод:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    // Do something 
} 
+0

Спасибо, это помогло. Но теперь у меня немного другая проблема. Я не уверен, что я должен создать для него отдельную тему. Итак, я поместил свой контроллер в качестве метода делегата и переопределил метод textFieldShouldReturn: также я поместил действие, которое должно быть запущено, когда нажата кнопка «Готово». Однако, когда я иду тестировать его на своем iPad, приложение вылетает ... до того, как эти изменения полностью сработают. Есть предположения? –

+0

Попробуйте добавить к вашему контроллеру, как в моем ответе. Кроме того, что находится в журнале? – kaspartus

+0

Я использую взломанную версию Xcode, и она ничего не показывает в журнале. Однако я могу описать, что я сделал в методе textFieldShouldReturn :. Я поместил эту строку кода [self performSelector: @selector (addButton :)]; // addButton - один из моих собственных методов. return NO; и все. Когда я прокомментирую это, приложение хорошо работает –

0

Вы должны использовать метод делегата от UITextField. (Set Делегат TextField для исправления ViewController в Interface Builder или в источнике)

Затем перейдите в .h файл ViewController TextField в:

@interface correctViewController(type yours) :UIViewController <UITextFieldDelegate> 
//now correctViewController "understands" our textfield. 

Перейти к correctViewController.m файл:

//Create delegate method of textField 
-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    [textField resignFirstResponder]; //to hide keyboard 
    return NO; 
} 

Похож на это.

+0

Что-то не так? – kaspartus

+0

Спасибо за ответ, но я искал НЕ, чтобы скрыть клавиатуру. Вот почему мне нужно переопределить этот метод. P.S. Это был не я, который вас не использовал –

+0

Я не понял вас правильно с помощью клавиатуры. Вы решаете свою проблему? – kaspartus

0

В Swift было бы:

//MARK: UITextFieldDelegate 

func textFieldShouldReturn(textField: UITextField) -> Bool 
{ 
    textField.resignFirstResponder() 

    return true 
}