Почему UITextField пользовательского представления заголовка navigationItem фокусируется, когда касание выходит за его пределы?

У меня есть UITextFields в пользовательском заголовке навигационного элемента. Когда я дотрагиваюсь до правой стороны, это тоже фокусируется. Я проверяю ситуацию в хит-методе. Вот данные.

hitbounds field point: {269, 6.5}, bounds:{{0, 0}, {255, 35}}; searchView point: {59, 6.5}, bounds: {{0, 0}, {45, 35}}; searchButton: {58, 11}, bounds: {{0, 0}, {44, 44}}

Вид поля содержит вид поиска справа, который содержит кнопку поиска.

точка поля: {269, 6.5}, границы:{{0, 0}, {255, 35}};
Дело не в его границах ясно. Но поле сжимается и появляется клавиатура.

И в конце концов я нахожу, когда клавиатура появляется, методы даже не вызываются pointInside:(CGPoint)point withEvent:(UIEvent *)event hitTest:(CGPoint)point withEvent:(UIEvent *)event

Зачем? Благодарю.

1 ответ

Я получил подсказку от Почему UINavigationBar крадет события касания?

Я предполагаю, что навигационная панель крадет событие касания и отправляет событие касания непосредственно в текстовое поле.

Итак, вот решение. Это работает хорошо.

@implementation UINavigationBar(Xxxxxx)

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView *v = [super hitTest:point withEvent:event];
    return v == self ? nil: v;
}

@end
Другие вопросы по тегам