Похоже, это регресс древнейшей ошибки, связанной с «удалением вперед» при вводе текста в iOS: http://www.openradar.me/15114422
Я считаю, что она регрессировала из-за новой клавиатуры «swipe to type».
У вас есть 2 варианта исправления:
- Обновите устаревший UIWebView до WKWebView
- Хакерское решение: вставьте отсутствующий селектор в
UIThreadSafeNode
во время выполнения.
Вот пример кода того, как вставить отсутствующий селектор:
BOOL canPerformAction(id withSender) {
return false;
}
- (void)viewDidLoad {
[super viewDidLoad];
Class class = NSClassFromString(@"UIThreadSafeNode");
class_addMethod(class, @selector(canPerformAction:withSender:), (IMP)canPerformAction, "@@:");
}
Вероятно, вы должны поместить метод вставки туда, где загружается только один раз, как в AppDelegate.
Вот полный пример проекта, если он вам нужен: https://github.com/elliotfiske/UIWebView-TextEntry-CrashFix/tree/master
Как воспроизвести:
Создайте форму ввода текста в UIWebView, введите несколько слов,затем переместите курсор к точному концу слова в середине предложения.
Затем выберите любое из подсказок с предсказательным текстом. Смотрите ошибку в действии здесь: