Почему 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