iPhone键盘有0-9和小数点?

时间:2010-01-17 04:50:43

标签: iphone sdk keyboard textfield

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

没有任何SDK键盘似乎有小数点。 (或者是吗?)所以我决定让用户键入“1234”,我会为他添加小数点...当他键入....使用编辑更改。

但每次我的代码添加小数点......它会生成另一个“编辑已更改”事件......并导致无限循环。

或者有更简单的方法来完成上述所有操作吗?

6 个答案:

答案 0 :(得分:7)

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

所以现在你必须:

myTextField.keyboardType=UIKeyboardTypeDecimalPad;

答案 1 :(得分:3)

请将您的请求发布为iPhone Developer Portal中的错误。苹果不会添加一个新的键盘类型,只是带有小数分隔符的数字,直到他们听到大量开发人员需要一个...

-t

答案 2 :(得分: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,使其看起来像一个键。使用上述功能可以在调用时将其添加到键盘。实际上效果很好。

答案 3 :(得分: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;
}

但这并不漂亮:)

答案 4 :(得分:0)

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

    descriptionTextArea.inputAccessoryView = editorControlView;

答案 5 :(得分:-1)

  1. 将您自己的视图设为键盘(推荐),
  2. 只需使用数字&amp;标点键盘并输入验证,
  3. 分隔“美元”和“美分”文本字段(不推荐)。