2014-01-24 37 views
1

默认情况下,当点击UITextField时,iOS将显示默认键盘。有没有可能绕过这个?我希望在textField上点击模态显示自定义视图控制器,并能够通过此控制器编辑textField。显示用于编辑UITextField的模态自定义键盘视图控制器

有没有推荐的方法?

+1

查看UITextFieldDelegate ..我认为当字段被点击时,“textFieldShouldBeginEditing”被调用...然后您可以立即调用'[textField resignFirstResponder]'(使用选项禁用动画,以便它不会向上滑动然后显示你的自定义键盘UIView(添加子视图)...或者用UIViewController进行模态操作(如果你需要的话)?不要忘记将添加到你的.h后的textField.delegate = self ! –

+0

@AlbertRenshaw我将探索这条道路。谢谢 – tiguero

+0

@tiguero:它的运气还没有呢? – footyapps27

回答

1

好的尝试了,你问的具体要求: -

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 

    POCModalViewController *objPOCModalViewController = [[POCModalViewController alloc]init]; 
    [self presentViewController:objPOCModalViewController animated:YES completion:nil]; 

return NO; 
} 

哪里POCModalViewController是你想呈现控制器。

+0

有可能关闭键盘并让textField成为第一个响应奥德? – tiguero

+0

键盘根本不会显示! 你想显示键盘吗? – footyapps27

+0

我不想显示默认的键盘;我想触发我的模态视图控制器的显示,而不是保留textField作为响应者链中的第一响应者 – tiguero

2

当用户单击UItextField时,以下wil将重新输入键盘作为输入视图。

self.TextField.inputView = "your view "; 
+0

这不是我的想法:我想在开始编辑文本字段时触发一个模态视图控制器 – tiguero

0

我想后的解决方案,我终于实现,这是最接近Footyapps27解决方案:

  1. 我已经提出,将呈现模态控制器,控制器(它将包含内部多个自定义键盘视图)作为我的控制器视图中包含的任何UITextField对象的uitextfield委托。

  2. 我现在可以接收通过- (BOOL)textFieldShouldBeginEditing:(TWValueInput *)textField方法的任何通知时,文本框开始进行编辑:

在该委托方法我有下面的代码片断:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

      MyCustomKeyboardVC* vc = [[UIStoryboard storyboardWithName:@"main" bundle:nil] instantiateViewControllerWithIdentifier:@"customKeyboardController"]; 
      vc.delegate = self; 


      self.modalPresentationStyle = UIModalPresentationCurrentContext; 

      [self presentViewController:vc animated:NO completion:nil]; 

      return NO; 
    } 

返回NO在该方法内将阻止显示默认键盘。实际上并不需要在文本框中调用resignFirstResponder

我应该指出,苹果公司推荐的显示自定义键盘的方法是提供一个自定义视图,以提供像Divya提到的文本字段inputView属性。由于我想管理多个键盘视图条目,因此通过上面提到的委托方法显示自定义键盘控制器会更快。

相关问题