Ответ 1
Он не работает для меня тоже... то, что я сейчас делаю, это просто использовать textWillChange
и textDidChange
, который вызывает, как вы упомянули, при изменении вашего выбора... (они называются ПЕРЕД и ПОСЛЕ)
И затем сравниваем: self.textDocumentProxy.documentContextBeforeInput
self.textDocumentProxy.documentContextAfterInput
От ПЕРЕД (textWillChange) в ПОСЛЕ (textDidChange), чтобы увидеть, изменился ли диапазон выбора или длина.
Что-то вроде этого (установите 4 NSStrings ниже в вашем файле .h, конечно... не проверили этот точный фрагмент, потому что я написал его с нуля только сейчас на SO.com, но я уверен, что принцип работает, если Я сделал какие-либо ошибки)
- (void)textWillChange:(id<UITextInput>)textInput {
beforeStringOfTextBehindCursor = self.textDocumentProxy.documentContextBeforeInput;
beforeStringOfTextAfterCursor = self.textDocumentProxy.documentContextAfterInput;
}
- (void)textDidChange:(id<UITextInput>)textInput {
afterStringOfTextBehindCursor = self.textDocumentProxy.documentContextBeforeInput;
afterStringOfTextAfterCursor = self.textDocumentProxy.documentContextAfterInput;
BOOL didSelectionChange = NO;
if (![beforeStringOfTextBehindCursor isEqualToString:afterStringOfTextBehindCursor]) {
didSelectionChange = YES;
}
if (![beforeStringOfTextAfterCursor isEqualToString:afterStringOfTextAfterCursor]) {
didSelectionChange = YES;
}
if (didSelectionChange) {
NSLog(@"Selection Changed!");
}
}