Как сделать ключ возврата на iPhone, чтобы клавиатура исчезла?
У меня есть два UITextFields
(например, имя пользователя и пароль) но я не могу избавиться от клавиатуры при нажатии на клавишу Enter на клавиатуре. Как я могу это сделать?
14 ответов:
сначала вам нужно соответствовать
UITextFieldDelegate
протокол в заголовочном файле View / ViewController выглядит следующим образом:@interface YourViewController : UIViewController <UITextFieldDelegate>
тогда в вашем .M файл вам нужно реализовать следующее
UITextFieldDelegate
метод протокола:- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; }
[textField resignFirstResponder];
убедитесь, что клавиатура отключена.убедитесь, что вы устанавливаете свой view/viewcontroller в качестве делегата UITextField после ввода текстового поля в поле .м:
yourTextField = [[UITextField alloc] initWithFrame:yourFrame]; //.... //.... //Setting the textField's properties //.... //The next line is important!! yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
реализовать метод UITextFieldDelegate следующим образом:
- (BOOL)textFieldShouldReturn:(UITextField *)aTextField { [aTextField resignFirstResponder]; return YES; }
посмотреть управление клавиатура для полного обсуждения этой темы.
ваши UITextFields должны иметь объект делегата (UITextFieldDelegate). Используйте следующий код в делегате, чтобы клавиатура исчезла:
- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; }
должно работать до сих пор...
взял меня пару испытаний, имел тот же вопрос, это сработало для меня:
проверьте орфографию на -
(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder];
я исправил мой в
textField
вместоtextfield
, заглавная буква "F"... и бинго!! это сработало..
после совсем немного времени, выслеживая что-то, что имеет смысл, это то, что я собрал и он работал как шарм.
.h
// // ViewController.h // demoKeyboardScrolling // // Created by Chris Cantley on 11/14/13. // Copyright (c) 2013 Chris Cantley. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITextFieldDelegate> // Connect your text field to this the below property. @property (weak, nonatomic) IBOutlet UITextField *theTextField; @end
.м
// // ViewController.m // demoKeyboardScrolling // // Created by Chris Cantley on 11/14/13. // Copyright (c) 2013 Chris Cantley. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // _theTextField is the name of the parameter designated in the .h file. _theTextField.returnKeyType = UIReturnKeyDone; [_theTextField setDelegate:self]; } // This part is more dynamic as it closes the keyboard regardless of what text field // is being used when pressing return. // You might want to control every single text field separately but that isn't // what this code do. -(void)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; } @end
надеюсь, что это помогает!
установите делегат UITextField для вашего ViewController, добавьте ссылочный выход между владельцем файла и UITextField, а затем реализуйте этот метод:
-(BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField == yourTextField) { [textField resignFirstResponder]; } return NO; }
добавьте это вместо предопределенного класса
class ViewController: UIViewController, UITextFieldDelegate {
чтобы удалить клавиатуру при нажатии за пределами клавиатуры
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { self.view.endEditing(true) }
и для удаления клавиатуры при нажатии enter
добавьте эту строку в viewDidLoad ()
inputField-это имя используемого текстового поля.
self.inputField.delegate = self
и добавить эту функцию
func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true }
Swift 2:
это то, что сделано, чтобы сделать все !
закрыть клавиатуру с или
Touch outSide
,Next
для перехода к следующему входу.Первое Изменение TextFiled
Return Key
доNext
в раскадровке.override func viewDidLoad() { txtBillIdentifier.delegate = self txtBillIdentifier.tag = 1 txtPayIdentifier.delegate = self txtPayIdentifier.tag = 2 let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture") self.view.addGestureRecognizer(tap) } func textFieldShouldReturn(textField: UITextField) -> Bool { if(textField.returnKeyType == UIReturnKeyType.Default) { if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField { next.becomeFirstResponder() return false } } textField.resignFirstResponder() return false } func onTouchGesture(){ self.view.endEditing(true) }
в Swift, вы должны делегировать UITextfieldDelegate, его важно не забыть, в viewController, как:
class MyViewController: UITextfieldDelegate{ mytextfield.delegate = self func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() } }
Если вы хотите, чтобы исчезла клавиатура при записи на поле оповещения textfileds
[[alertController.textFields objectAtIndex:1] resignFirstResponder];
вы можете добавить IBAction в uiTextField (событие releation- "Did End On Exit"), и IBAction может называться hideKeyboard,
-(IBAction)hideKeyboard:(id)sender { [uitextfield resignFirstResponder]; }
кроме того,вы можете применить его к другим текстовым полям или кнопкам,например,вы можете добавить скрытую кнопку в представление, когда вы нажимаете ее, чтобы скрыть клавиатуру.
вы можете попробовать этот подкласс UITextfield, который вы можете установить условие для динамического изменения текста UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField