Я хочу ответить на события касания (в частности, UIControlEventTouchUpInside
и UIControlEventTouchUpOutside
) на UITextField
, но единственное событие, которое проходит, - UIControlEventTouchCancel
.Как я могу реагировать на события касания на UITextField?
Я не могу использовать UIControlEventEditingDidBegin
, потому что это происходит только тогда, когда поле получает фокус, а это не то, что я пытаюсь обнаружить. Я хочу знать, когда пользователь поднимает палец и находится ли он внутри или вне текстового поля, независимо от текущего состояния фокусировки.
Кто-нибудь знает, как это осуществить?
Чтобы быть ясным, я пробовал использовать addTarget:action:forControlEvents
и он не работает. Отмена отменяется. Я хочу, чтобы обнаружить контакт до доUITextField
потребляет его и производит событие Отмена.
Кроме того, я хотел бы избежать создания дополнительных просмотров, если это возможно.
Нет, это определенно не работает. Первое, что я пробовал. Метод «yourDesiredMethod» никогда не вызывается. Я могу получить события для UIControlEventTouchDown, но ни одно из событий TouchUp не запускается. Вместо этого запускается событие UIControlEventTouchCancel. Я не могу просто использовать это событие как хакерский прокси для события, которое я хочу, потому что он также запускается, когда длительное нажатие вызывает цикл увеличения и когда что-то еще отменяет ввод пользователя, например модальный диалог или экран блокировки , – theK42
Вау, я предполагал, что он будет работать, как и любой другой класс на основе UIView. Вы можете создать пользовательский UITextField и переопределить метод touchhesBegan:, чтобы стать первым ответчиком в соответствующих случаях, так что клавиатура все еще показывает. –
Итак, я попробовал переопределить штрихиBegan/Ended/Canceled, и это также дало мне пару Began/Canceled без события Ended. Это действительно расстраивает! Кроме того, переопределение этих методов не помешало textField стать первым ответчиком, поэтому базовый класс делает обработку касания, прежде чем я получу шанс! – theK42