我正在寫一個iPhone應用程序,該應用程序有一個textField供用戶輸入「美元數量」,如12.34帶有0-9和小數點的iPhone鍵盤?
沒有一個SDK鍵盤似乎有小數點。 (或者他們?)所以我決定只讓用戶輸入「1234」,我會爲他添加小數點......因爲他使用EDITING CHANGED鍵入....
但是,每次我的代碼添加小數點...它會生成另一個「編輯已更改」事件...並導致無限循環。
還是有更簡單的方法來做到上述所有?
我正在寫一個iPhone應用程序,該應用程序有一個textField供用戶輸入「美元數量」,如12.34帶有0-9和小數點的iPhone鍵盤?
沒有一個SDK鍵盤似乎有小數點。 (或者他們?)所以我決定只讓用戶輸入「1234」,我會爲他添加小數點......因爲他使用EDITING CHANGED鍵入....
但是,每次我的代碼添加小數點...它會生成另一個「編輯已更改」事件...並導致無限循環。
還是有更簡單的方法來做到上述所有?
您可以更改在委託的textField:shouldChangeCharactersInRange:replacementString:
的UITextField
的文本 - 剛剛從這個方法返回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改變處理程序,以表明你自己改變值,somethign像:
-valueDidChange:(id)notify {
static BOOL ownChange = NO;
if (ownChange) return;
ownChange = YES;
textField.text = "12.23";
ownChange = NO;
}
這是不漂亮,雖然:)
請將您的請求作爲iPhone Developer Portal中的錯誤發佈。蘋果不會加那就是簡單地用小數點的數字,直到他們從大量的誰需要一個開發人員聽到一個新的鍵盤類型...
-t
您可以添加自定義按鈕,在現有的鍵盤。我已經完成了這個操作,在數字鍵盤上添加了一個「完成」按鈕。爲什麼不添加其他人?您可以將刪除鍵減半,併爲小數點添加半角鍵。無論如何,這裏的代碼:
- (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,因此它看起來像一個關鍵。調用上述函數可將其添加到鍵盤。其實工作得很好。
您的代碼保存按鈕或在xib中創建。唯一的問題是如果鍵盤佈局或樣式改變了,那麼你的按鈕可能會很難看。 – 2010-06-06 17:28:18
我用你的方法,它一直工作到iOS4 ... 看來,[[UIApplication sharedApplication]窗口]現在只有一個元素。 你有什麼想法解決這個問題嗎? – 2010-06-29 09:25:36
對於iOs4,你應該看看:http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key :) – 2010-07-05 21:20:26
它不完美,因爲它位於鍵盤的頂部,但是您可以在inputAccessoryView中添加一個按鈕(已記錄且合法)。我在xib文件中定義了一個工具欄(不是在我的主視圖中),並將touch-up映射到一個將小數點添加到字段的方法。我給它分配在doLoad:
descriptionTextArea.inputAccessoryView = editorControlView;
我認爲這將是很好的指出,作爲新的SDK,你可以使用新UIKeyboardTypeDecimalPad
。
所以,現在你只需要:
myTextField.keyboardType=UIKeyboardTypeDecimalPad;
如果要創建multilanguge應用程序,請記住,在一些國家,逗號(「‘)代替點在小數(’。」) 。 – Jacek 2010-01-17 10:17:45