默认情况下,当点击UITextField
时,iOS将显示默认键盘。有没有可能绕过这个?我希望在textField上点击模态显示自定义视图控制器,并能够通过此控制器编辑textField。显示用于编辑UITextField的模态自定义键盘视图控制器
有没有推荐的方法?
默认情况下,当点击UITextField
时,iOS将显示默认键盘。有没有可能绕过这个?我希望在textField上点击模态显示自定义视图控制器,并能够通过此控制器编辑textField。显示用于编辑UITextField的模态自定义键盘视图控制器
有没有推荐的方法?
好的尝试了,你问的具体要求: -
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
POCModalViewController *objPOCModalViewController = [[POCModalViewController alloc]init];
[self presentViewController:objPOCModalViewController animated:YES completion:nil];
return NO;
}
哪里POCModalViewController
是你想呈现控制器。
有可能关闭键盘并让textField成为第一个响应奥德? – tiguero
键盘根本不会显示! 你想显示键盘吗? – footyapps27
我不想显示默认的键盘;我想触发我的模态视图控制器的显示,而不是保留textField作为响应者链中的第一响应者 – tiguero
当用户单击UItextField时,以下wil将重新输入键盘作为输入视图。
self.TextField.inputView = "your view ";
这不是我的想法:我想在开始编辑文本字段时触发一个模态视图控制器 – tiguero
我想后的解决方案,我终于实现,这是最接近Footyapps27解决方案:
我已经提出,将呈现模态控制器,控制器(它将包含内部多个自定义键盘视图)作为我的控制器视图中包含的任何UITextField对象的uitextfield
委托。
我现在可以接收通过- (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
属性。由于我想管理多个键盘视图条目,因此通过上面提到的委托方法显示自定义键盘控制器会更快。
查看UITextFieldDelegate ..我认为当字段被点击时,“textFieldShouldBeginEditing”被调用...然后您可以立即调用'[textField resignFirstResponder]'(使用选项禁用动画,以便它不会向上滑动然后显示你的自定义键盘UIView(添加子视图)...或者用UIViewController进行模态操作(如果你需要的话)?不要忘记将添加到你的.h后的textField.delegate = self ! –
@AlbertRenshaw我将探索这条道路。谢谢 – tiguero
@tiguero:它的运气还没有呢? – footyapps27