2

私はこれを試しました:

ファイル.h内:

    @interface TouchLabelViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *aTextField;        
-(IBAction)hideKeyboard:(id)sender;

ファイル.m内:

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

そしてまたこれを試しました。

ファイル.h内:

- (void)viewDidLoad
{
    [super viewDidLoad];
    aTextField.delegate = self;
}
@property (strong, nonatomic) IBOutlet UITextField *aTextField;
-(BOOL) textFieldShouldReturn:(UITextField *)textField;

ファイル.m内:

-(BOOL) textFieldShouldReturn:(UITextField *)textField{

    [aTextField resignFirstResponder];
    return YES;
}

ただし、リターンキーをタッチしても、キーボードは非表示になりません。

4

8 に答える 8

8

デリゲートをテキストフィールドに設定すると、これらの(デリゲート)メソッドを利用できます。

デリゲートをテキストフィールドに設定したかどうかをデリゲートを確認する必要があります

これを.hクラスに設定する

     YourViewController :   UIViewController <UITextFieldDelegate>

ここで、以下のようにTextFieldセットデリゲートを作成しました

       myTextField.delegate = self;

そしてさらにあなたがしていたのと同じことをしなさい

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

編集:現在の UIModalPresentationFormSheet プレゼンテーションモードを提示している場合、不要なときにキーボードが表示されたままになることがあります。デフォルトの実装はUIModalPresentationFormSheetの可視性に影響します。そのため、キーボードを非表示にするためにオーバーライドする必要があります。

  - (BOOL)disablesAutomaticKeyboardDismissal 
 {
   return NO; 
 }
于 2012-10-29T04:59:46.943 に答える
2

TextFieldの最初のセットデリゲート

aTextField.delegate = self;

-(BOOL) textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
于 2012-10-29T05:02:22.217 に答える
1
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
     [textField resignFirstResponder];
    //[aTextField resignFirstResponder];
    return YES;
}
于 2012-10-29T04:57:28.163 に答える
1

UITextFieldをアウトレットにして、XIBファイルに添付してから、デリゲートを設定し、その中にコードを記述します。

[texfieldName resignFirstResponder];

これは機能します。

于 2012-10-29T05:07:53.147 に答える
1

<UITextFieldDelegate>以下に示すように、.mファイルにを実装するだけです。

@interface xyzViewController () <UITextFieldDelegate>

xyzViewControllerビューコントローラの名前になります。このコードを使用します:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    [theTextField resignFirstResponder];
    return YES;
}
于 2013-04-13T14:31:04.587 に答える
0

代理人をあなたに与えるUITextField

お気に入り

- (void)viewDidLoad
{
    yourTextField.delegate = self;//
}

およびDelegateメソッドで。

-(BOOL) textFieldShouldReturn:(UITextField *)textField{
     [textField resignFirstResponder];
     return YES;
}
于 2012-10-29T04:55:04.847 に答える
0

XIBまたはプログラムでinをDelegate使用します。UITextField

 -(IBAction)hideKeyboard:(id)sender
{
    [your_textfield resignFirstResponder]; // your_textfield is an UITextField
}
于 2012-10-29T04:56:34.563 に答える
0

UITextFieldの場合このように行うことができます

.hファイル内

@interface ViewController : UIViewController<UITextFieldDelegate>

.mファイル内

- (void)viewDidLoad
{
   textField.delegate = self;
}

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

そしてUITextViewの場合あなたはこのようにそれを行うことができます

.hファイル内

@interface ViewController : UIViewController<UITextViewDelegate>

.mファイル内

- (void)viewDidLoad
{
   textView.delegate = self;
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }

    return YES;
}
于 2013-11-20T06:09:00.130 に答える