2011-01-27 3 views
5

나는 이것이 과거에 몇 번 묻지 만 내가 시도한 모든 것은 실패하고 있음을 안다. UILabel이있는 사용자 정의 숫자 키패드가 있습니다. 내가 '1'을 누르면 UILabel이 하나를 표시합니다. 내가 원하는 '4'버튼 다음에 UILabel의 아이폰에 소수 자릿수를 자동으로 삽입하는 방법은 무엇입니까?

  • 0.01 :

    • 내가 원하는 '1'버튼을 누르면 경우 : 0.14을 UILabel의
    • 지금 여기에 내가 할 노력하고있어입니다
    • 는 그런 다음 '6': 1.46
    • 등 등

    이제 키보드와 UILabel의 큰 노력하고 있습니다. 이제 10 진수를 가져와야합니다. 모든 샘플 코드는 훌륭 할 것입니다 (그리고 어플리케이션에 배치해야하는 곳). 지금까지 내 코드를보고 싶다면 알려주십시오. 꽤 직설적 인. 모두에게 감사드립니다!

  • +2

    왜 downvotes? 이것은 큰 질문입니다! –

    답변

    4

    는 여기에 내가 그것을 할 것입니다 방법에 관하여 :

    #define NUMBER_OF_DECIMAL_PLACES 2 
    NSMutableArray *typedNumbers = ...; //this should be an ivar 
    double displayedNumber = 0.0f; //this should also be an ivar 
    
    //when the user types a number... 
    int typedNumber = ...; //the number typed by the user 
    [typedNumbers addObject:[NSNumber numberWithInt:typedNumber]]; 
    displayedNumber *= 10.0f; 
    displayedNumber += (typedNumber * 1e-NUMBER_OF_DECIMAL_PLACES); 
    //show "displayedNumber" in your label with an NSNumberFormatter 
    
    //when the user hits the delete button: 
    int numberToDelete = [[typedNumbers lastObject] intValue]; 
    [typedNumbers removeLastObject]; 
    displayedNumber -= (numberToDelete * 1e-NUMBER_OF_DECIMAL_PLACES); 
    displayedNumber /= 10.0f; 
    //show "displayedNumber" in your label with an NSNumberFormatter 
    

    브라우저에 입력. 주의 사항 구현 자. double 대신 NSDecimal을 사용하는 보너스 포인트.

    무슨 일이 일어나고 있는지의

    설명 :

    우리는 기본적으로 비트 이동을하고있는

    , 대신 기본 2의베이스 (10)의 사용자 유형은 숫자 (예 : 6), 우리는 "변화"기존의 수 소수점 하나 (예 : 0.000 => 00.00)를 입력하고 입력 된 숫자에 0.01을 곱한 다음 (6 => 0.06) 기존 숫자 (00.00 => 00.06)에 추가하십시오. 사용자가 다른 번호 (예 : 1)를 입력 할 때도 마찬가지입니다. 왼쪽으로 시프트 (00.06 => 00.60), 입력 한 숫자에 0.01을 곱해서 (1 => 0.01), (00.60 => 00.61)을 더하십시오. 번호를 저장하는 목적이 NSMutableArray이면 간단히 삭제를 쉽게 할 수 있습니다. 그러나 필요하지는 않습니다. 단지 편리함.

    삭제 버튼이있는 경우 사용자가 마지막으로 입력 한 번호 (예 : 1)를 0.01을 곱한 다음 (0.01 = 1) 0.01에서 빼십시오 (0.61 = 0.6), 소수점 이하 1 자리수로 이동합니다 (0.6 => 0.06). 입력 한 숫자 배열에 숫자가있는 한이를 반복하십시오. 어레이가 비어있을 때 삭제 버튼을 비활성화하십시오.

    NSDecimal을 사용하기위한 제안은 단순히 매우 높은 정밀도의 숫자를 허용하는 것입니다.

    +0

    모든 질문에 유감스럽게 생각합니다.하지만 첫 번째 신청서를 작성하고 있으며 여전히 객관성이 매우 새롭습니다.-c. 코드가하는 일을 간단히 설명해 주시겠습니까? 나는 당신이 그것을 아주 잘 덧붙였다는 것을 알고 있지만이 코드를 사용하는 방법에 대해서는 아직도 확신이 없다. :) –

    +0

    @Alex는 대답 편집을 끝냈다. :) –

    관련 문제