我有一个应用需要包含一个字段,用户可以在其中输入小数标量数字。有没有如何实现这一目标的方法?我已经阅读了Matt Neuburg"编程iOS 7"中的相关部分。书。我尝试过Cocoapod(MPNumericTextField)。我没有太多运气......
到目前为止我所取得的成就:
UITextField
。outlet
和delegate
。Keyboard Type
设置为Decimal Pad
。 实施了以下3种方法:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"textFieldShouldEndEditing:");
[textField resignFirstResponder];
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"textFieldShouldReturn:");
[textField resignFirstResponder];
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
NSLog(@"textFieldDidBeginEditing:");
[textField selectAll: nil];
}
似乎我必须实施textField:shouldChangeCharactersInRange:replacementString:
方法以避免重复的小数点被放入。
但是当我输入数字时,我无法弄清楚如何解除/关闭键盘。如果您关闭它,Decimal Pad
的重点是什么?
我还有其他事情要做一个简单的数字字段吗?
答案 0 :(得分:1)
以下代码行可能满足您的需求
[self.view endEditing:YES];
答案 1 :(得分:0)
您需要像这样实现委托来扫描数字并避免价值加倍.
。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == _amountField) {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([newString length] == 0)
{
return YES;
}
double holder;
NSScanner *scan = nil;
scan = [NSScanner scannerWithString: newString];
return ([scan scanDouble: &holder] && [scan isAtEnd]);
}
return YES;
}