无法关闭文本字段上的键盘
Posted
技术标签:
【中文标题】无法关闭文本字段上的键盘【英文标题】:Not able to dismiss the keyboard on textfield 【发布时间】:2017-04-15 12:33:13 【问题描述】:我在故事板上的视图控制器结构。
主视图 -> 滚动视图 -> 视图 -> 3 个文本字段(在主视图上添加一个滚动视图,再次添加一个视图,然后添加 3 个文本字段)。
在第一个文本字段(日期),打开日期选择器。
在第二个文本字段(城市)上,为城市列表打开新的视图控制器,选择城市后,它将为工作区打开新的视图控制器。选择工作区后将返回主视图控制器,所选城市和工作区显示在第二个文本(城市)字段中。
在第三个文本字段(客户)上,打开普通键盘。
它工作正常,但问题是如果我点击 customer textfield,它会在我点击 city textfield 的同时打开键盘,而不是打开 城市列表视图控制器,但键盘没有关闭。 城市列表视图控制器上也会显示键盘。
我已经尝试过下面的想法。
我已经在尝试使用 [self.view endEditing:YES] 和 resignFirstResponder。但没有得到任何成功的结果。
我已经将标签分配给 textfield 并且还在 viewDidLoad() 方法中设置了委托。 我还从情节提要中分配了代表。
self.cityOrAreaTXTFld.delegate = self;
self.selectCustTXTFld.delegate = self;
self.dateTXTFld.tag = 1;
self.cityOrAreaTXTFld.tag = 2;
self.selectCustTXTFld.tag = 3;
我的 textFieldDidBeginEditing() 方法
- (void)textFieldDidBeginEditing:(UITextField *)textField
if(textField.tag==1)
NSLog(@"Code to open date picker");
else if (textField.tag==2)
[self.view endEditing:YES];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *CityPEVC = [storyboard instantiateViewControllerWithIdentifier:@"CityListViewController"];
[self.navigationController pushViewController:CityPEVC animated:YES];
return;
else if(textField.tag==3)
[_dateTXTFld resignFirstResponder];
[_cityOrAreaTXTFld resignFirstResponder];
我有一个解决方案
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
if(textField.tag == 2)
[_dateTXTFld resignFirstResponder];
[_selectCustTXTFld resignFirstResponder];
return YES;
else
return YES;
在此解决方案中,如果键盘未打开不是问题,但如果在 主视图控制器 上打开了任何键盘并且第一次点击 city textfield 它将关闭键盘(未打开城市列表 VC),然后第二次单击 城市文本字段,此时它将打开 城市列表视图控制器。
是否有任何解决方案,如果在主视图控制器上打开任何其他文本字段键盘,我点击城市列表文本字段。比如何关闭该键盘并同时打开城市列表视图控制器?
【问题讨论】:
【参考方案1】:我想在 viewWillDisappear: 中使用它是有意义的,以便在控制器被解除之前隐藏键盘
[self.view endEditing:YES];
【讨论】:
如何结束这个问题? 打开您的堆栈并打开右上角的声誉。您在下面显示了您提出的问题。选择任何问题,在问题下方,您会显示四个标签 - 共享、编辑、删除和标记。一步一步慢慢来。显示此屏幕截图:prntscr.com/extnm5 我认为它适合您。【参考方案2】:将此方法应用于TouchesBegan函数
示例代码如下:
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
[self.view endEditing:YES];
当您触摸屏幕上的任何位置时,它会关闭键盘。
【讨论】:
【参考方案3】:viewController.h
@interface yourViewcontroller : UIViewController
<
UITextFieldDelegate
>
viewController.m
- (void)viewDidLoad
[super viewDidLoad];
yourTextField.delegate=self;
-(BOOL)textFieldShouldReturn:(UITextField *)textField
[self.view endEditing:YES];//dismiss all text field
return YES;
【讨论】:
以上是关于无法关闭文本字段上的键盘的主要内容,如果未能解决你的问题,请参考以下文章