2017-04-15 59 views
0

故事板上的我的视图控制器结构。无法关闭文本框上的键盘

主视图 - >滚动视图 - >视图 - > 3文本字段(在主视图中添加一个滚动视图,再次添加一个视图,比添加3文本字段)。

1日文本框(日期),开放日期选择器。

2日文本框(市),城市列表打开新的视图控制器,并选择城市后,会打开工作区。经过选择工作区域新的视图控制器,它会回来主视图控制器选定的城市和工作区域显示在第二个文本(城市)字段中。

3日文本框(客户),开普通键盘。

它工作正常,但如果我点击客户文本框的问题是,它会打开键盘在同一时间,我点击城市文本框比它会打开城市列表视图控制器但键盘不解雇。键盘也显示在城市列表视图控制器

我已经尝试如下认为。

我已经试着用[self.view endEditing:YES]和resignFirstResponder。但没有取得任何成功的结果。

我在分配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; 


} 

在这个解决方案的一个解决方案,如果键盘不大于不是一个问题开放但如果任何键盘在主视图控制器和Fi上打开第一次点击city textfield它会解除键盘(不开放城市列表VC),第二次点击city textfield那时它会打开城市列表视图控制器

有没有什么解决办法,如果任何其他文本框的键盘是主视图控制器打开,我点击城市名单文本框。比如何解开键盘和同时打开城市列表视图控制器?

回答

0

我想这将是有意义的使用它里面viewWillDisappear:为了隐藏键盘控制器被驳回

[self.view endEditing:YES]; 
+0

感谢ü这么多亲爱的..它的工作 – Dhara

+0

如何关闭这个问题? – Dhara

+0

打开你的堆栈并打开右下角的声誉。在这个问题中,你会看到下面的问题。选择任何问题和以下问题,您将显示四个标签 - 共享,编辑,删除和标记。 慢慢跟随一步。 显示此屏幕截图:http://prntscr.com/extnm5 我认为它适合你。 –

0

之前应用此方法的touchesBegan功能

示例代码如下:

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ 
    [self.view endEditing:YES]; 
} 

当你触摸屏幕上的任何地方它会l 解雇键盘。

0

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