2014-11-06 2 views
0
그때 변경 가능한 문자열로 문자를 추가 내가 문자를 삭제하는 코드를 사용하면 사용자 정의 키보드

문자열 엑스 코드

- (IBAction) press:(id)sender { 
    [[UIDevice currentDevice] playInputClick]; 
    if (sender == AEE) { 
     self.BACK.hidden = NO; 
     A = @"A"; 
     NSLog(@"sender:%@",sender); 
    } 
    if (sender == BEE) { 
     self.BACK.hidden = NO; 
     A = @"B"; 
    } 

    if (sender == CEE) { 
     self.BACK.hidden = NO; 
     A = @"C"; 
    } 

    if (sender == DEE) { 
     self.BACK.hidden = NO; 
     A = @"D"; 
    } 

    if (sender == EEE) { 
     self.BACK.hidden = NO; 
     A = @"E"; 
    } 

    if (sender == EFF) { 
     self.BACK.hidden = NO; 
     A = @"F"; 
    } 

    if (sender == ONE) { 
     self.BACK.hidden = NO; 
     A = @"1"; 
    } 

    if (sender == TWO) { 
     self.BACK.hidden = NO; 
     A = @"2"; 
    } 

    if (sender == THREE) { 
     self.BACK.hidden = NO; 
     A = @"3"; 
    } 

    if (sender == FOUR) { 
     self.BACK.hidden = NO; 
     A = @"4"; 
    } 

    if (sender == FIVE) { 
     self.BACK.hidden = NO; 
     A = @"5"; 
    } 

    if (sender == SIX) { 
     self.BACK.hidden = NO; 
     A = @"6"; 
    } 

    if (sender == SEVEN) { 
     self.BACK.hidden = NO; 
     A = @"7"; 
    } 

    if (sender == EIGHT) { 
     self.BACK.hidden = NO; 
     A = @"8"; 
    } 

    if (sender == NINE) { 
     self.BACK.hidden = NO; 
     A = @"9"; 
    } 

    if (sender == ZERO) { 
     self.BACK.hidden = NO; 
     A = @"0"; 
    } 




    if (display.length <= 7) { 
     [self.display appendString:A]; 
     DONE.hidden = YES; 
    } 
    if (display.length == 8) { 
     DONE.hidden = NO; 
    } 


    else { 
     [self.display appendString:@""]; 
    } 


    //**THIS IS WHERE I DELETE CHARATERS** 
    if (sender == BACK) { 


       [display deleteCharactersInRange:NSMakeRange([display length]-2, 2)]; 
         NSLog(@"display2:%@", display); 
     if (self.display.length <1) { 
      BACK.hidden = YES; 
     } 
     if (display.length < 8) { 
      DONE.hidden = YES; 
     } 
    } 


    you.text = display; 
} 

에서 텍스트 뷰에 넣어 다음 코드를 사용하고

에서 문자를 삭제 모든 문자 1 - 7에 대해 잘 작동합니다. 백 스페이스 버튼을 눌러도 문자 하나가 삭제됩니다. 그러나 백 스페이스 단추를 눌러 8 자로 된 문자를 삭제하면 두자를 삭제합니다.

[display deleteCharactersInRange:NSMakeRange([display length]-1, 1)]; 

과 같이 한 문자 만 삭제하도록 코드를 변경하면 문자 한 번만 삭제됩니다. 그리고 넣어두면

[display deleteCharactersInRange:NSMakeRange([display length]-1, 2)]; 

도 마찬가지입니다. 하지만 넣어 때

[display deleteCharactersInRange:NSMakeRange([display length]-2, 1)]; 

내 응용 프로그램이 충돌하고 한계 초과 오류가 발생합니다. 나는 디스플레이 = < 7을 사용하려고 시도했다. -2,2 코드를 사용하고 디스플레이 == 8은 -1,1 코드를 사용하지만 아무 것도 항상 문자 수를 줄이지는 않는다. 누구든지 어떤 제안이 있습니까? (ID) 보낸 사람 { [[UIDevice currentDevice] playInputClick :

답변

0

은 내가 삭제하기 위해 별도의 조치를 생성하고 사용하는 경우 다음과 같은 코드 모든

  • (IBAction를) 삭제 작업을 확인하는 듯 파악 ]; if (보낸 사람 == BACK) { if ([표시 길이]> 0) { [표시 할 setString : [표시 substringToIndex : [표시 길이] -1]]; you.text = display;

    } 
    else { 
        you.text = display; 
        //no characters to delete... attempting to do so will result in a crash 
    } 
    if (self.display.length <1) { 
        BACK.hidden = YES; 
    } 
    if (display.length < 8) { 
        DONE.hidden = YES; 
    } 
    

    }