gpt4 book ai didi

ios - resignFirstResponder 不隐藏键盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:08:12 26 4
gpt4 key购买 nike

我有三个文本框。

vacDate
vacTime
vacType

当我点击 vacDatevacTime 时,我会显示日期选择器 myDatePicker

此外,当我点击任何地方时,我会调用隐藏所有键盘和日期选择器的 hideAllKeyboards。

- (void)textFieldDidBeginEditing:(UITextField *)textField {
NSLog(@"textFieldDidBeginEditing===%@" , textField.text);
CGAffineTransform translation = CGAffineTransformIdentity;

myDatePicker.hidden = YES;
if (textField==vacDate || textField==vacTime) {
[vacDate resignFirstResponder];
[vacTime resignFirstResponder];
[vacType resignFirstResponder];
myDatePicker.hidden = NO;
}


if (textField==vacType) {
translation = CGAffineTransformMakeTranslation(0, -60);
}

[UIView beginAnimations:nil context:nil];
self.view.transform = translation;
[UIView commitAnimations];
}

-(IBAction)hideAllKeyboards {
NSLog(@"hideAllKeyboards...");
[vacDate resignFirstResponder];
[vacTime resignFirstResponder];
[vacType resignFirstResponder];
myDatePicker.hidden = YES;

NSLog(@"my date data is %@", myDatePicker.date);

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *strDate = [dateFormatter stringFromDate:[myDatePicker date]];
NSLog(@"my date is ::: %@", strDate);
vacDate.text = strDate;

dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh mm a"];
strDate = [dateFormatter stringFromDate:[myDatePicker date]];
NSLog(@"my date is ==%@==", strDate);
strDate = [strDate stringByReplacingOccurrencesOfString:@" " withString:@":"];
strDate = [strDate stringByReplacingOccurrencesOfString:@":A" withString:@" A"];
strDate = [strDate stringByReplacingOccurrencesOfString:@":P" withString:@" P"];
vacTime.text = strDate;


[UIView beginAnimations:nil context:nil];
self.view.transform = CGAffineTransformIdentity;
[UIView commitAnimations];

}

下面是我正在做的。

点击 vacDate,然后设置时间。设置时间后,点击任意位置。在 vacDate 和 vacTime 中设置日期和时间。现在我转到 vacType 并键入文本,然后单击完成。现在所有的键盘都被隐藏了。

现在我再次点击 vacType。现在我看到了键盘(默认)。现在我单击 vacDate 或 vacTime。 在这里,我希望像第一步那样显示日期选择器,但我看到了默认键盘

知道为什么 resignFirstResponder 不适用于所有键盘。由于键盘不调用 resignFirstResponder,因此我看不到日期选择器。


编辑1

使用我的代码,我注意到当我输入 vacType 然后单击回到 vacDate 或 vacTime 时,我看到了日期选择器的上半部分,但默认键盘没有隐藏。我仍然看到默认键盘。我想强行隐藏这个键盘。

最佳答案

endEditing 代替 resignFirstResponder 隐藏键盘怎么样:-

[self.view endEditing:YES];

编辑

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { {
NSLog(@"textFieldDidBeginEditing===%@" , textField.text);
CGAffineTransform translation = CGAffineTransformIdentity;


if (textField==vacDate || textField==vacTime) {
[self.view endEditing:YES];

[UIView beginAnimations:nil context:nil];
self.view.transform = translation;
[UIView commitAnimations];
myDatePicker.hidden = NO;
return NO;
}
else
{

if (textField==vacType) {
translation = CGAffineTransformMakeTranslation(0, -60);
}
[UIView beginAnimations:nil context:nil];
self.view.transform = translation;
[UIView commitAnimations];
myDatePicker.hidden = YES;
return YES;
}

}

注意:-

在 UI 中或以编程方式使用 UITextfiled 时,不要像 if (textField==vacType) 那样检查 Textfiled,而是使用 Tag。这是检查您正在编辑的 text filed 的更好选择。像if(textfiled.tag==1)

DEMO link

关于ios - resignFirstResponder 不隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com