2つのUITextFields
(たとえば、ユーザー名とパスワード)がありますが、キーボードのリターンキーを押したときにキーボードを取り除くことができません。これどうやってするの?
まず、View/ViewControllerのヘッダーファイルのUITextFieldDelegate
プロトコルに準拠する必要があります。
@interface YourViewController : UIViewController <UITextFieldDelegate>
次に、.mファイルで、次のUITextFieldDelegate
プロトコルメソッドを実装する必要があります。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
は、キーボードが閉じられていることを確認します。
.mのテキストフィールドを初期化した後、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];
事前定義されたクラスの代わりにこれを追加します
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
}
UITextFieldのデリゲートをViewControllerに設定し、ファイルの所有者とUITextFieldの間に参照アウトレットを追加してから、このメソッドを実装します。
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
かなりの時間をかけて意味のあるものを探した後、これが私がまとめたものであり、それは魅力のように機能しました。
.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
お役に立てれば!
Swiftでdelegate UITextfieldDelegateにする必要があります。viewControllerで次のように、重要なことを忘れないでください。
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
Swift 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)
}
警告ボックスのテキストファイルに書き込むときにキーボードを非表示にする場合
[[alertController.textFields objectAtIndex:1] resignFirstResponder];
UiTextFieldにIBActionを追加できます(releationイベントは「終了時に終了しました」)、IBActionはhideKeyboardという名前を付けることができます。
-(IBAction)hideKeyboard:(id)sender
{
[uitextfield resignFirstResponder];
}
また、他のtextFieldsまたはボタンに適用することもできます。たとえば、キーボードをクリックして非表示にするときに、非表示ボタンをビューに追加できます。
UIReturnKeyを動的に変更するテキストの条件を設定できるこのUITextfieldサブクラスを試すことができます。
https://github.com/codeinteractiveapps/OBReturnKeyTextField