iOS - 无法摆脱键盘

时间:2015-04-22 11:21:10

标签: ios keyboard

我有一个文本字段供用户输入字符串,然后是另一个文本字段,单击时会显示一个视图,该视图会在其中滑动日期选择器。

如果用户点击第一个文本字段并使用键盘输入字符串,然后点击键盘上的返回按钮,键盘就会消失。但是,如果他们在第一个文本字段中输入字符串后单击日期文本字段,则键盘将保留在屏幕上。

我试过这个:

@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *dateField;

....

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField {
    return(![textField isEqual:self.dateField]);
}

它不起作用。 我也尝试了这个(当用户点击dateField时,这是在开始编辑时触发的):

- (IBAction)dateTextFieldClicked:(id)sender {
    [self.nameField resignFirstResponder];
}

然后这个:

- (IBAction)dateTextFieldClicked:(id)sender {
    [self.view endEditing:YES];
}    

这些都不起作用。是我试图做的甚至可能吗?我应该放弃还是有某种方式可行?

3 个答案:

答案 0 :(得分:0)

试试这个..

- (IBAction)dateTextFieldClicked:(id)sender {
[self.nameField resignFirstResponder];
[self.view endEditing:YES]; }    

答案 1 :(得分:0)

有一种简单的方法,我有同样的问题。将dateField作为UIButton,而不是UITextField。在Button操作中,将其设置如下:

- (IBAction)Date_set:(id)sender
 {
    [self.view endEditing:YES];
    [self YourDatePickerset];
} 

当DatePicker值改变时,设置按钮的标题

- (void)pickerChanged:(id)sender
{
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
    [dateformate setDateFormat:@"dd LLL yyyy"]; // Date formater
    NSString *date = [dateformate stringFromDate:[myPicker date]]; // Convert date to string
    NSLog(@"date :%@",date);
    [dob_btn setTitle:date forState:UIControlStateNormal];
}

答案 2 :(得分:0)

您可以使用此代码段让我告诉结果

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

确保所有文本字段的委托都设置为self

也试试这个
修改

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[dateField resignFirstResponder];    
[nameField resignFirstResponder];
}
相关问题