У меня есть простая кнопка UIB, и я хочу что-то сделать, когда пользователь дотрагивается до нее, но затем перемещает палец за пределы кнопки и не касается экрана. Похоже, мне нужно прослушать событие UIControlEventTouchUpOutside.
В моем контроллере представления я сделал это:
UIButton *bt = [[UIButton alloc] initWithFrame:rect];
[bt setBackgroundColor:[UIColor whiteColor]];
[bt addTarget:self action:@selector(onTouchUpOutside) forControlEvents:UIControlEventTouchUpOutside];
[self.view addSubview:bt];
и соответствующий метод действия:
- (void)onTouchUpOutside {
NSLog(@"touchUpOutside");
}
Теперь угадайте, что? Я касаюсь кнопки, затем перетаскиваю палец за ее пределы, не касаюсь экрана, и сообщение не регистрируется. В самом деле, мне было бы зарегистрировано, что произошло событие UIControlEventTouchUpInside, даже если мой палец не находится над кнопкой. Кажется, что я могу перемещать палец примерно на 150% ширины и высоты вокруг этой кнопки при прикосновении, и это скажет мне, что палец был в кнопке, когда я не касался. Но когда я перемещаю его очень далеко (= достаточно далеко), я получаю это сообщение "touchUpOutside". Так это просто очередное безумие от Apple, вроде задержки в -touchesMoved и тому подобного? Или я что-то не так сделал?