У меня есть простой UIButton и вы хотите что-то сделать, когда пользователь коснется его, но затем перемещает палец за кнопку и отключает экран. Мне кажется, что мне нужно прослушать событие UIControlEventTouchUpOutside.Странное поведение UIButton: Это нормально?
На мой взгляд, контроллер, я сделал это:
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». Так это просто очередное безумие от яблока, как задержка в -touchesMoved и тому подобное? Или я сделал что-то не так?
ОК, так что из-за удобства использования ... Я просто удивляюсь, почему эта область настолько невероятна огромна ;-) – 2009-08-19 18:02:23
Люди имеют более толстые пальцы, чем вы думаете, также они глупее. –