Swizzling не меняет название метода. В противном случае было бы невозможно вызвать метод, поскольку среда выполнения находит реализацию, используя имя. Все, что он делает - это изменяет адрес кода, который запускается при вызове определенного метода.
Мое предположение относительно того, почему метод deleteBackward
не вызывается, заключается в том, что система ввода использует метод из более сложного протокола UITextInput , скорее всего, replaceRange:withText:
. Попробуйте выполнить это и выполнить ваш вызов, когда аргумент text
является пустой строкой. Также убедитесь, что функция Swizzling не возвращает ошибку.