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

只需<UITextFieldDelegate>在 .m 文件中实现如下所示

@interface xyzViewController () <UITextFieldDelegate>

xyzViewController将是您的视图控制器的名称。使用此代码:

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

使您的 UITextField 成为一个出口并将其附加到您的 XIB 文件中,然后设置委托并在其中编写代码:

[texfieldName resignFirstResponder];

这将起作用。

于 2012-10-29T05:07:53.147 回答
0

将代表交给您的UITextField

喜欢

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

并在委托方法中..

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

您在 XIB 中或以编程方式使用Delegatein 。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 回答