在我的应用程序中,我有一个文本字段,从用户输入一些数字输入,所以我将键盘类型设置为“数字键盘”,但现在我不知道如何在用户完成输入时解雇它。我知道我必须使用委托方法“textfieldShouldReturn”,但问题是数字键盘没有返回键。是否有必要在键盘上添加自定义完成键或有其他方法?
答案 0 :(得分:42)
另一种解决方案 - 将inputAccessoryView
添加到yourNumberTextFiled
- (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];
}
答案 1 :(得分:6)
您需要添加背景点按
-(IBAction)backGroundTap:(id)sender
在点h中,然后在点m文件中
-(IBAction)backGroundTap:(id)sender
[nameField resignFirstResponder];
[numberField resignFirstResponder];
答案 2 :(得分:4)
如果您知道要输入的号码的长度(例如4位数的PIN码),您可以在输入4个键后自动关闭键盘。
我遇到一个问题,在4个键之后辞职第一个响应者(如果你在辞职后返回YES会忽略最后一个按键,所以我在辞职时添加了一个异步延迟。
此代码位于UITextField委托中:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// max 4 keypresses
if(range.location == 3){
// async workaround for can't return YES after resignFirstResponder
[self performSelector:@selector(closeKeypad:)
withObject:textField
afterDelay:0.1
];
}
else if(range.location > 3){
return NO;
}
return YES;
}
-(void) closeKeypad:(UITextField*)textField {
[textField resignFirstResponder];
}
答案 3 :(得分:0)
另一个非常容易实现的解决方案,它可用于更改输入焦点或解除键盘。
实现此功能(和委托UITextFieldDelegate):
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
然后,当您想要关闭键盘或更改焦点时,您只需要调用这样的通知程序:
[self performSelector:@selector(focusNextField:) withObject:textField afterDelay:0.1];
最后,关掉这个键盘:
- (void) focusNextField:(UITextField *) textField
{
[textField resignFirstResponder];
// some code
}
别的!