【发布时间】:2014-02-26 06:58:15
【问题描述】:
在iOS中,当点击UITextField时,会弹出一个系统默认的数字键盘。我已经做了自己的控制。我想在单击UITextField 时调出我自己的控件,就像系统默认数字键盘一样。我可以在编程中这样做吗?如果有,怎么做?
【问题讨论】:
标签: ios iphone uitextfield
在iOS中,当点击UITextField时,会弹出一个系统默认的数字键盘。我已经做了自己的控制。我想在单击UITextField 时调出我自己的控件,就像系统默认数字键盘一样。我可以在编程中这样做吗?如果有,怎么做?
【问题讨论】:
标签: ios iphone uitextfield
您可以通过[self.view endEditing:YES]; 隐藏键盘并显示您自己的控件。
试试上面UITextField委托方法下面的代码行:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // return NO to disallow editing.
- (void)textFieldDidBeginEditing:(UITextField *)textField; // became first responder
【讨论】:
有一个用于此目的的属性。只需将其分配给您的自定义控件的视图,如下所示:
[yourTextField setInputView:yourCustomControlsView];
【讨论】:
带有自定义视图和自定义按钮。键盘本身很容易做,您只需在视图上放置一些按钮,然后显示该视图。您真正的问题是将按钮操作连接到文本字段。
您必须检查第一响应者,然后将与您的自定义键盘对应的值添加到其文本中。在文本字段中从键盘实际“输入”那些奇怪的字符将是一个更加困难的问题。我不熟悉,那些是真正的ASCII字符吗?
不管怎样,你要做很多工作。代码不是很困难,需要一些复杂的算法,但实现起来会很棘手和复杂,所以要小心
【讨论】:
试试下面的代码。确保将代表分配给UITextField。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
CustomNumberPadViewController *customNumberPadViewController = [[CustomNumberPadViewController alloc] initWithNibName:@"CustomNumberPadView" bundle:nil];
[self presentViewController:CustomNumberPadViewController animated:YES completion:nil];
}
【讨论】: