5

我正在编写一个 iPhone 应用程序,它有一个 textField 供用户输入“美元金额”,如 12.34

SDK 键盘似乎都没有小数点。(或者是吗?)所以我决定让用户输入“1234”,然后我会在他输入时为他添加小数点......通过使用 EDITING CHANGED。

但是每次我的代码添加小数点时......它都会生成另一个“EDITING CHANGED”事件......并导致无限循环。

还是有更简单的方法来完成上述所有操作?

4

6 回答 6

7

我认为最好指出从新 SDK 开始,您可以使用新的UIKeyboardTypeDecimalPad.

所以现在你只需要:

myTextField.keyboardType=UIKeyboardTypeDecimalPad;
于 2011-02-13T07:50:33.163 回答
3

请将您的请求作为错误发布在 iPhone 开发者门户中。Apple 不会添加一种新的键盘类型,它只是带有小数点分隔符的数字,直到他们收到大量需要的开发人员的...

-t

于 2010-01-17T16:52:25.570 回答
1

您可以将自定义按钮添加到现有键盘。我这样做是为了在数字键盘上添加一个“完成”按钮。为什么不添加其他人?您可以将删除键切成两半,并为小数点添加一半大小的键。无论如何,这是代码:

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        if ( MAKE SURE THIS IS BEING CALLED BY THE CORRECT TEXT FIELD ) {

           // locate keyboard view
           UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
           UIView* keyboard;

           for(int i = 0; i < [tempWindow.subviews count]; i++) {
                  keyboard = [tempWindow.subviews objectAtIndex:i];
                  // keyboard view found; add the custom button to it
                  if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
                         [keyboard addSubview:doneButton];
           }
        }
        else
           [doneButton removeFromSuperview];
    }  

您需要从图像创建一个 UIButton,使其看起来像一个键。每当它被调用时,使用上述功能将其添加到键盘。实际上效果很好。

于 2010-01-17T21:43:36.830 回答
0

您可以UITextField在委托期间更改 ' 文本textField:shouldChangeCharactersInRange:replacementString:- 只需从此方法返回 NO,但更改文本(添加小数点),如下所示:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // add decimal point to newText

    textField.text = newText;
    return NO;
}

或者,在您的值更改处理程序中使用静态 BOOL 来指示您正在自己更改值,例如:

-valueDidChange:(id)notify {
     static BOOL ownChange = NO;
     if (ownChange) return;
     ownChange = YES;
     textField.text = "12.23";
     ownChange = NO;
}

不过,这并不漂亮:)

于 2010-01-17T10:42:29.333 回答
0

它并不完美,因为它位于键盘顶部,但您可以在 inputAccessoryView 中添加一个按钮(记录在案且合法)。我在 xib 文件(不在我的主视图中)中定义了一个工具栏,其修饰映射到将小数添加到字段的方法。我在doLoad中分配它:

    descriptionTextArea.inputAccessoryView = editorControlView;
于 2010-09-05T03:02:59.660 回答
-1
  1. 将您自己的视图设为键盘(推荐),
  2. 只需使用数字和标点符号键盘并进行验证,
  3. 将“dollars”和“cents”文本字段分开(不推荐)。
于 2010-01-17T06:48:45.313 回答