iPhoneのリターンキーを作成してキーボードを非表示にする方法は?


108

2つUITextFields(ユーザー名とパスワードなど)を持っていますが、キーボードのReturnキーを押してもキーボードを取り除くことができません。これどうやってするの?

回答:


242

まず、次のようにUITextFieldDelegateView / ViewControllerのヘッダーファイルのプロトコルに準拠する必要があります。

@interface YourViewController : UIViewController <UITextFieldDelegate>

次に、.mファイルに次のUITextFieldDelegateプロトコルメソッドを実装する必要があります。

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

    return YES;
}

[textField resignFirstResponder]; キーボードが閉じていることを確認します。

.mでテキストフィールドを初期化した後、ビュー/ビューコントローラーを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

7
テキストフィールドをクリックしてデリゲートをストーリーボードに実装することもできます。ユーティリティパネルを表示し、[接続インスペクタ]をクリックして、デリゲートアウトレットをビューコントローラにドラッグします。
guptron 2013年

1
textFieldShouldReturnメソッドはどこに実装されていますか?そのクラスをUITextFieldのデリゲートに設定する必要があります。デリゲートコールバックは、デリゲートとして設定されているクラスから、およびクラスがそれを実装した場合にのみ発生します。
シド

1
ヘッダーのUITextFieldDelegateに準拠するようにMyViewControllerを設定しましたか?
2013

1
myTextFieldが正しく割り当てられており、nilでない限り。技術的には、nil(クラッシュなし)であれば問題ありませんが、それでも何も起こりません:)
Sid

1
そして、もし追加したいのであれば、UIFloatLabelTextFieldなどのオーバーライドされた UITextFieldクラスを使用しているだけでも問題ありません。yourTextField.delegate= self; !!!
Gellie Ann、2016

19

次のようにUITextFieldDelegateメソッドを実装します。

- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}


6

UITextFieldsにはデリゲートオブジェクト(UITextFieldDelegate)が必要です。デリゲートで次のコードを使用して、キーボードを非表示にします。

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

これまでに動作するはずです...


こんにちは、私はあなたが上で言ったことをやったが、それでもキーボードを消すことができない。あなたはなにか考えはありますか?ありがとう。
K.Honda

こんにちは、すべてソートされました。ありがとう。
K.Honda

6

いくつかのトライアルを取り、同じ問題がありました、これは私にとってうまくいきました:

スペルをチェック-

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

私はのtextField代わりに私のものを修正しtextfield、「F」を大文字にします...そしてビンゴ!! 出来た..


4

リターンキーが押されたら、次を呼び出します:

[uitextfield resignFirstResponder];

ねえコナー、リターンキーが押されたとき、アプリはどのように知るのですか?ありがとう。
K.Honda

3

かなりの時間をかけて何か意味のあるものを探し出した後、これを組み合わせて魅力のように機能しました。

.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

お役に立てれば!


3

UITextFieldのデリゲートをViewControllerに設定し、ファイルの所有者とUITextFieldの間に参照アウトレットを追加してから、このメソッドを実装します。

-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{
   if (textField == yourTextField) 
   {
      [textField resignFirstResponder]; 
   }
   return NO;
}

3

事前定義されたクラスの代わりにこれを追加します

class ViewController: UIViewController, UITextFieldDelegate {

キーボードの外側をクリックしたときにキーボードを削除するには

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

Enterキーを押したときにキーボードを削除するには

この行をviewDidLoad()に追加します

inputFieldは、使用されるtextFieldの名前です。

self.inputField.delegate = self

この関数を追加します

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

2

スウィフト2:

これがあらゆることをするために行われたことです!

DoneボタンまたはTouch outSideでキーボードを閉じ、Next次の入力に進みます。

StoryBoardで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)
}

アップルでは、​​タグの使用を明示的に推奨していません。代わりにIBOutletCollectionを使用できます
Antzi

2

迅速にあなたはUITextfieldDelegate委譲する必要があります、その重要なことは忘れないでください、viewControllerのように:

class MyViewController: UITextfieldDelegate{

     mytextfield.delegate = self

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

0

uiTextFieldにIBActionを追加することができ(releationイベントは「Did End On Exit」です)、IBActionにはhideKeyboardという名前を付けることができます。

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

また、他のtextFieldsまたはボタンに適用することもできます。たとえば、クリックしてキーボードを非表示にしたときに、非表示のボタンをビューに追加できます。



0

警告ボックスのテキストフィールドに書き込むときにキーボードを非表示にする場合

[[alertController.textFields objectAtIndex:1] resignFirstResponder];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.