Я начинаю разрабатывать пользовательскую клавиатуру с iOS8 и objective-c. Я хотел бы создать кнопку удаления, которая удаляет один символ, в точке вставки, при однократном нажатии и удаляет целые слова при нажатии. deleteBackward, кажется, удаляет один символ, но на Apple разработчикам docs я нашел:
Чтобы определить, сколько текста нужно удалить, когда вы вызываете метод deleteBackward, получите текстовый контекст рядом с точкой вставки из свойства documentContextBeforeInput свойства textDocumentProxy следующим образом:
NSString *precedingContext = self.textDocumentProxy.documentContextBeforeInput;
Затем вы можете удалить то, что вы считаете подходящим, например, один символ или все обратно к символу пробела.
Но я не понимаю, как это достичь... Есть ли способ удалить полное слово?
EDIT: я нашел решение... это простой tokenize на documentContextBeforeInput:
-(void)pressDeleteKey{
NSArray *tokens = [self.textDocumentProxy.documentContextBeforeInput componentsSeparatedByString:@" "];
for (int i = 0; i < [[tokens lastObject] length];i++) {
[self.textDocumentProxy deleteBackward];
}
}