2014-11-06 5 views
0

Я использую следующий код для добавления символа в изменяемые строки затем положить его в TextView с пользовательской клавиатурыудалить символ из строки Xcode

- (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. Где бы я ни был, если я нажму кнопку backspace, он удалит один символ. Однако, когда я нажимаю кнопку backspace, чтобы удалить символ из 8 символов, он удаляет два символа. Если я изменю код, чтобы удалить только один символ, например

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

удаляет только один символ один раз. И если я положил

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

он делает то же самое. Но когда я положил

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

Мое приложение падает, и я получаю ошибку за пределы. Я попытался использовать, если display = < 7 используйте один код -2,2, и если дисплей == 8 использует код -1,1, но ничто не уменьшает количество символов на единицу все время. У кого-нибудь есть предложения?

ответ

0

Я понял, что если я создал отдельное действие для удаления и используется следующий код все, казалось, работало нормально

  • (IBAction) Удалить: (идентификатор) отправитель { [[UIDevice CurrentDevice] playInputClick ]; если (отправитель == BACK) { если ([дисплей длина]> 0) { [дисплей комплектString: [дисплей подстрокаToIndex: [дисплей длина] -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; 
    } 
    

    }