【问题标题】:iPhone SDK NumberPad custom inputView for done buttoniPhone SDK NumberPad 自定义 inputView 用于完成按钮
【发布时间】:2011-02-28 01:26:30
【问题描述】:
目前我有一个文本字段,它拉出一个数字键盘进行输入。
我想要 NumberPad 键盘布局,但我需要一个按钮来退出响应者。
有没有办法对 UITextField 进行编码,使其具有 NumberPad 键盘,并将键盘左侧空白的空间替换为“完成”、“发送”或“开始”按钮。
或者我需要为 UITextField 创建一个自定义的 inputView 吗?
我会认为,既然 NumberPad 苹果上有一个空白键,它会有所帮助。
【问题讨论】:
标签:
iphone
uitextfield
uikeyboard
【解决方案1】:
尝试使用带有完成按钮的UIToolBar 作为文本字段的inputAccessoryView。在按钮单击事件中提供关闭键盘的代码。认为这应该适合你。
或者,如果您想在键盘上绘制自定义按钮,您可以在此处搜索以获取解决方案
【解决方案2】:
如果您使用 phonePad,则需要空按钮。但是您可以使用“应用”和“取消”按钮添加inputAccessoryView,然后关闭数字键盘。
- (void)viewDidLoad
{
[super viewDidLoad];
UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
nil];
[numberToolbar sizeToFit];
numberTextField.inputAccessoryView = numberToolbar;
}
-(void)cancelNumberPad{
[numberTextField resignFirstResponder];
numberTextField.text = @"";
}
-(void)doneWithNumberPad{
NSString *numberFromTheKeyboard = numberTextField.text;
[numberTextField resignFirstResponder];
}
【解决方案3】:
您现在需要做一个自定义输入视图并将其分配给您的文本字段的输入视图属性。我目前正在研究它,但这是正确的、被认可的方法。不过,仅仅更改一个按钮似乎有点过头了。