Я использую следующий код для добавления символа в изменяемые строки затем положить его в 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, но ничто не уменьшает количество символов на единицу все время. У кого-нибудь есть предложения?