Как сделать ключ возврата на iPhone, чтобы клавиатура исчезла?


У меня есть два UITextFields (например, имя пользователя и пароль) но я не могу избавиться от клавиатуры при нажатии на клавишу Enter на клавиатуре. Как я могу это сделать?

14 107

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"... и бинго!! это сработало..

при нажатии клавиши возврата вызовите:

[uitextfield resignFirstResponder];

после совсем немного времени, выслеживая что-то, что имеет смысл, это то, что я собрал и он работал как шарм.

.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