2010-01-17 3 views
4

사용자가 12.34와 같이 "달러 금액"을 입력 할 수있는 iPhone 응용 프로그램을 작성하고 있습니다.iPhone 키보드 (0-9 및 소수점 포함)?

소수점이없는 SDK 키보드가 없습니다. (그렇습니까?) 그래서 사용자 유형을 "1234"로 지정하기로 결정하고 그에 대한 소수점을 추가 할 것입니다. 입력 한대로 .... 편집 변경을 사용합니다.

그러나 내 코드에서 소수점을 추가 할 때마다 ... 다른 "편집 변경됨"이벤트가 생성되어 무한 루프가 발생합니다.

위의 모든 것을 더 쉽게 할 수있는 방법이 있습니까?

+1

, 일부 국가 쉼표 (",") 대신 점으로 사용되는 것을 명심 소수 분수에 :에

그래서 지금 당신은이 (".") . – Jacek

답변

-1
  1. 또는
  2. 별도은 "달러"와 "센트", 또는
  3. 그냥 숫자를 & 문장 키보드를 사용 (권장) 키보드로 자신의 뷰를 확인 및 검증에 넣어 텍스트 필드 (권장하지 않음).
+0

1. 와우. 정말? 12 버튼 더 ... 12 콘센트 ... 12 연결 더 ... 12 릴리스 더 ... 코드? ___________________________ 2. 키가 너무 작습니다. ___________________________ 3. 더러워 요. 그래서 쉬운 방법은 없습니다. 거기 있습니까? – Donna

+0

NumPad 키보드를 사용하고 키보드 상단에 "소수점"버튼을 넣을 수는 있지만 문서화되지 않은 뷰 계층 구조에 액세스하는 것이 필요합니다. – kennytm

0

당신은 대리인의 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; 
} 

을 다른 방법으로는,를 사용 :)

하지만,이 꽤되지

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

: 당신의 가치 정적 BOOL는 직접 값을 변경하고 표시하기 위해 핸들러, somethign 등으로 변경

3

요청 사항을 iPhone Developer Portal에 버그로 게시하십시오. 애플은 당신은 기존의 키보드로 사용자 정의 버튼을 추가 할 수 있습니다

1

-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을 만들어야합니다. 위의 기능을 사용하여 키보드가 호출 될 때마다 키보드에 추가 할 수 있습니다. 사실 꽤 잘 작동합니다.

+0

코드에 버튼이 있거나 xib에서 생성되었습니다. 유일한 고려 사항은 키보드 레이아웃이나 스타일이 변경되면 버튼이 추악 할 수도 있다는 것입니다. –

+0

당신의 방법을 사용했고 iOS4까지 작동했습니다 ... [[UIApplication sharedApplication] windows]에는 이제 하나의 요소 만있는 것 같습니다. 이 문제를 해결할 생각이 있습니까? –

+0

iOs4의 경우 다음을 참조하십시오. http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key :) –

0

키보드 위쪽에 있기 때문에 완벽하지는 않지만 inputAccessoryView (문서화되고 합법적 인)에 버튼을 추가 할 수 있습니다. 필드에 십진수를 추가하는 방법에 매핑 된 터치 업을 사용하여 xib 파일에 도구 모음을 정의합니다 (내 주보기에는 표시되지 않음). 나는 doLoad에 할당 :

descriptionTextArea.inputAccessoryView = editorControlView; 
7

나는 새로운 SDK의로 새 UIKeyboardTypeDecimalPad을 사용할 수 있다는 점을 지적하는 것이 좋을 것 같아.당신이 multilanguge 응용 프로그램을 작성하는 경우

myTextField.keyboardType=UIKeyboardTypeDecimalPad;