Как заставить клавишу возврата на iPhone заставить клавиатуру исчезнуть?

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

107 голосов | спросил K.Honda 31 Maypm11 2011, 19:57:40

12 ответов


0

Во-первых, вам нужно соответствовать протоколу 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's properties
//....    
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
ответил Sid 31 Maypm11 2011, 20:04:02
0

Реализуйте метод UITextFieldDelegate следующим образом:

- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}
ответил Nick Weaver 31 Maypm11 2011, 20:03:27
0

См. управление клавиатурой для полного обсуждения этой темы.

ответил Caleb 31 Maypm11 2011, 20:06:35
0

Взял у меня пару испытаний, имел ту же проблему, у меня это сработало:

Проверьте правильность написания в -

(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

Я исправил свой в textField вместо textfield, заглавная "F" ... и бинго !! это сработало ..

ответил Ema 26 J0000006Europe/Moscow 2012, 23:33:15
0

Когда нажата клавиша возврата, позвоните:

[uitextfield resignFirstResponder];
ответил Conor Taylor 31 Maypm11 2011, 20:02:34
0

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

.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

Надеюсь, это поможет!

ответил user2904476 16 62013vEurope/Moscow11bEurope/MoscowSat, 16 Nov 2013 00:08:37 +0400 2013, 00:08:37
0

Установите делегат UITextField на свой ViewController, добавьте выходную ссылку между владельцем файла и UITextField, затем реализуйте этот метод:

-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{
   if (textField == yourTextField) 
   {
      [textField resignFirstResponder]; 
   }
   return NO;
}
ответил Avinash651 9 +04002014-10-09T15:16:18+04:00312014bEurope/MoscowThu, 09 Oct 2014 15:16:18 +0400 2014, 15:16:18
0

Добавьте это вместо предопределенного класса

class ViewController: UIViewController, UITextFieldDelegate {

Чтобы удалить клавиатуру при нажатии за пределами клавиатуры

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }

и для удаления клавиатуры при нажатии введите

добавьте эту строку в viewDidLoad ()

inputField - это имя используемого textField.

self.inputField.delegate = self

и добавьте эту функцию

func textFieldShouldReturn(textField: UITextField) -> Bool {        
        textField.resignFirstResponder()        
        return true        
    }
ответил Ali Kahoot 29 J000000Friday16 2016, 13:54:09
0

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)
}
ответил Mojtabye 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 14 Sep 2015 09:50:10 +0300 2015, 09:50:10
0

в swift вы должны делегировать UITextfieldDelegate , важно не забывать об этом в viewController, например:

class MyViewController: UITextfieldDelegate{

     mytextfield.delegate = self

     func textFieldShouldReturn(textField: UITextField) -> Bool {
          textField.resignFirstResponder()
     }
}
ответил Eduardo Oliveros 17 PM000000100000001231 2016, 22:56:12
0

Если вы хотите, чтобы клавиатура исчезла при записи текстовых файлов в окне предупреждений

[[alertController.textFields objectAtIndex:1] resignFirstResponder];
ответил DURGESH Chaurasiya 22 FebruaryEurope/MoscowbMon, 22 Feb 2016 13:30:20 +0300000000pmMon, 22 Feb 2016 13:30:20 +030016 2016, 13:30:20
0

Вы можете добавить IBAction в uiTextField (событие освобождения - «Закончено ли при выходе»), и IBAction может называться hideKeyboard,

-(IBAction)hideKeyboard:(id)sender
{
    [uitextfield resignFirstResponder];
}

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

ответил 慭慭流觞 3 PM00000050000002031 2013, 17:40:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132