按返回键我无法隐藏键盘

时间:2012-10-29 04:53:14

标签: iphone ios resignfirstresponder

我试过这个:

.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;
}

但是每当我触摸返回键时,它都不会隐藏键盘。

8 个答案:

答案 0 :(得分:8)

将委托设置为文本字段时,可以利用这些(委托)方法。

你应该检查你的代表是否已将代表设置为文本字段

.h班级

中设置此项
     YourViewController :   UIViewController <UITextFieldDelegate>

现在你在哪里创建了TextField集委托,如下所示

       myTextField.delegate = self;

进一步做与你一样的事情

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

编辑:如果您将当前时间显示为UIModalPresentationFormSheet  演示模式可以在不需要时保持键盘可见。  默认实现会影响UIModalPresentationFormSheet可见性。这就是为什么需要覆盖它来隐藏键盘

  - (BOOL)disablesAutomaticKeyboardDismissal 
 {
   return NO; 
 }

答案 1 :(得分:2)

首先为TextField设置委托

aTextField.delegate = self;

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

将您的UITextField作为插座并将其附加到您的XIB文件中,然后设置委托并在其中编写代码:

[texfieldName resignFirstResponder];

这样可行。

答案 4 :(得分:1)

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

@interface xyzViewController () <UITextFieldDelegate>

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

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

答案 5 :(得分:0)

将代表交给您的UITextField

喜欢

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

并在Delegate方法中..

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

答案 6 :(得分:0)

您在XIB中使用Delegate中的UITextField或以编程方式使用。{/ p>

 -(IBAction)hideKeyboard:(id)sender
{
    [your_textfield resignFirstResponder]; // your_textfield is an UITextField
}

答案 7 :(得分: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;
}