У меня есть два UITextFields
(например, имя пользователя и пароль), но я не могу избавиться от клавиатуры при нажатии клавиши возврата на клавиатуре. Как я могу это сделать?
Как сделать ключ возврата на iPhone, чтобы клавиатура исчезла?
Ответ 1
Сначала вам нужно соответствовать протоколу UITextFieldDelegate
в заголовочном файле View/ViewController следующим образом:
@interface YourViewController : UIViewController <UITextFieldDelegate>
Затем в вашем .m файле вам необходимо реализовать следующий метод протокола UITextFieldDelegate
:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
позволяет отключить клавиатуру.
Убедитесь, что вы настроили view/viewcontroller как делегат UITextField после инициализации текстового поля в .m:
yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField properties
//....
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
Ответ 2
Внедрить метод UITextFieldDelegate следующим образом:
- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
Ответ 3
См. Управление клавиатурой для полного обсуждения этой темы.
Ответ 4
В UITextFields должен быть объект-делегат (UITextFieldDelegate). Используйте следующий код в вашем делегате, чтобы клавиатура исчезла:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
}
Должно работать до сих пор...
Ответ 5
Принял пару испытаний, имел такую же проблему, это сработало для меня:
Проверьте правописание на
(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
Я исправил шахту textField
вместо textField
, заглавную "F"... и бинго!! он работал.
Ответ 6
При нажатии клавиши возврата вызовите:
[uitextfield resignFirstResponder];
Ответ 7
После довольно многого времени, охотясь за чем-то, что имеет смысл, это то, что я собрал, и это сработало как шарм.
.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
.m
//
// 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
Надеюсь, это поможет!
Ответ 8
Задайте делегат UITextField для вашего ViewController, добавьте ссылку между файловым владельцем и UITextField, затем выполните этот метод:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
Ответ 9
Добавьте это вместо предопределенного класса
class ViewController: UIViewController, UITextFieldDelegate {
Удаление клавиатуры при нажатии на нее вне клавиатуры
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
и для удаления клавиатуры при нажатии введите
добавить эту строку в viewDidLoad()
inputField - это имя используемого текстового поля.
self.inputField.delegate = self
и добавьте эту функцию
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Ответ 10
Swift 2:
это то, что делается, чтобы делать все!
закрыть клавиатуру с помощью кнопки Done
или Touch outSide
, Next
для перехода к следующему входу.
Сначала измените TextFiled Return Key
на Next
в StoryBoard.
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)
}
Ответ 11
в swift вы должны делегировать UITextfieldDelegate, его важно не забывать, в viewController, например:
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
Ответ 12
Если вы хотите исчезнуть клавиатуру при записи в текстовое поле оповещения
[[alertController.textFields objectAtIndex:1] resignFirstResponder];
Ответ 13
Вы можете добавить IBAction в uiTextField (событие релиза - "Закончено на выходе" ), а IBAction может иметь имя hideKeyboard,
-(IBAction)hideKeyboard:(id)sender
{
[uitextfield resignFirstResponder];
}
также вы можете применить его к другим текстовым полям или кнопкам, например, вы можете добавить скрытую кнопку в представление, когда вы нажимаете на нее, чтобы скрыть клавиатуру.
Ответ 14
Вы можете попробовать этот подкласс UITextfield, который вы можете установить условие для текста, чтобы динамически изменять UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField