2011-03-02 4 views
0

특수한 "지우기"버튼을 포함하고 싶은 사용자 정의 숫자 키패드가 있습니다. 더 많거나 적은 마지막 문자를 제거하는 백 스페이스 버튼입니다. 이 버튼을 작동시키는 방법을 찾을 수 없습니다. 간단한 코드는 다음과 같습니다.iOS에서 간단한 백스 페이스 버튼을 만드는 방법은 무엇입니까?

-(IBAction)buttonDigitPressed:(id)sender { 
    currentNumber = currentNumber*10 + (double)[sender tag]; 
    priceOne.text = [NSString stringWithFormat:@"%.2f",currentNumber/100.0f]; 
} 

-(IBAction)cancelOperation { 
    (backspace code goes here) 
} 

어떤 아이디어가 좋을까요? 감사!

+0

이것은 Xcode와 아무 관련이 없으며 iPhone을 클릭 할 수 없습니다. –

답변

1

숫자를 float 또는 double으로 표시하는 것은 좋지 않을 수 있습니다. 텍스트 필드에 입력 한 숫자를 부동 소수점 숫자로 정확하게 표현할 수없는 경우 부동 소수점 반올림 오류로 문제가 발생할 수 있습니다. (이것은 분수에만 적용됩니다). 숫자를 NSString으로 저장하지 않는 이유는 무엇입니까? 그런 다음 문자열 연산을 사용하여 마지막 숫자를 잘라내서 숫자 값이 필요할 때 [NSString doubleValue]을 사용하여 숫자로 변환 할 수 있습니다.


편집 : 좋아, 그래서 여기에 좀 더합니다. currentNumberdouble 대신 NSMutableString*이라고 가정합니다. 나는 내 머리 위로 떨어져 다음 코드를 쓰고 있어요,하지만 일반적인 생각을 보여줍니다 텍스트 상자에 실제 값을 필요로 할 때마다

- (IBAction)buttonDigitPressed:(id)sender { 
    [currentNumber appendString:[NSString stringFromFormat:@"%d", [sender tag]]]; 
    priceOne.text = currentNumber; 
} 

- (IBAction)cancelOperation { 
    [currentNumber deleteCharactersInRange:NSMakeRange([currentNumber length]-1, 1)]; 
    priceOne.text = currentNumber; 
} 

, 당신은 단지 [currentNumber doubleValue]을 말한다. 실제로 priceOne.text을 직접 조작 할 수 있으므로 currentNumber가 필요하지 않습니다.

+0

사과하겠습니다. 조금 혼란스럽고 여전히이 iPhone 프로그래밍에 새로운 점이 있습니다. NSString으로 숫자를 저장해야한다고 할 때, 정확히 어떻게 바꾸겠습니까? –

0

좋아, 샘플을 약간 해석하고 표준 키보드 백 스페이스 버튼과 같은 동작을 수행하도록 안내 할 것입니다. 내 가정을 수정하기 위해 의견을 남기고 싶다면 이에 따라 업데이트하겠습니다.

먼저보기 컨트롤러 또는 키패드의 클래스에서 현재 활성화 된 UITextField을 추적하고 싶을 것입니다. 내가 볼 수있는 유일한 유일한 옵션은 UITextField에 현재 커서 위치를 가져 오는 비 전용 방법이 없기 때문에 마지막에서 뒤로 삭제하는 것입니다. 이제

priceOne.text = [priceOne.text substringToIndex:priceOne.text.length - 1]; 

이 잘만큼 당신이 텍스트 필드에 텍스트를 가지고 있지만 priceOne 그것에 텍스트가 없습니다 경우 문제가있을 것 같은 행동 때문에 길이가 있다고 확인해야합니다 : priceOne를 가정처럼 텍스트 필드에 뭔가가 0보다 크다

표준 키보드의 동작을 실제로 얻으려면 UIButton에서 멀리 이동하여 길게 누르거나 기타 미묘한 동작 중에 NSTimer을 통해 컨트롤을 반복적으로 실행할 수 있도록하는 것이 좋습니다.

추신 | Tamás에 따르면 유동 가치를 나타 내기 위해 float 또는 double을 사용하는 것이 좋지 않을 것이라는 점에 동의합니다. 특히 당신이 그들과 수학을하고자한다면.

관련 문제