2010-01-23 2 views
2

Я столкнулся с проблемой, когда у меня есть UIButton, в котором я хочу отслеживать события пресс-релиза. Поэтому я привязываюсь к событиям Touch Down/Touch Up. К сожалению, в определенных ситуациях это не будет отслеживать события Touch Up - например, при появлении сообщения Alert.Как я действительно знаю, когда выпущен UIButton?

- (IBAction)buttonDown:(id)sender; 
- (IBAction)buttonUp:(id)sender; 

Как убедиться, что контроллер представления уведомляется, когда кнопка идет от втягивания/нормального состояния, независимо от того, по какой причине?

+0

Единственный способ, которым я смог решить его до сих пор, - опросить свойство 'button.state' и ответить, когда он изменится на Normal. Это явно неоптимально. – sehugg

ответ

0

Вы должны отслеживать касание отменить событие, а также. Это должно сделать это.

Редактировать: Хм, а как насчет UIControlEventAllTouchEvents? Вы должны добавить его программно. Я действительно удивлен, что отменить не удалось. Вы также можете попробовать обработать -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event в своем UIViewController.

[myButton addTarget:self action:@selector(allTouches) forControlEvents:UIControlEventAllTouchEvents]; 

Отлично.

+0

Нет, это тоже не получилось. Обычно это происходит, когда я нажимаю UIAlert, пока кнопка удерживается. – sehugg

+0

На самом деле это произошло, когда я понял, что у меня была толстая проводка IB: P – sehugg

3

Попробуйте этот метод:

[myButton addTarget: target action: @selector(buttonUp:) forControlEvents: UIControlEventTouchUpInside]; 
+0

Забыл упомянуть, у меня есть как Touch Up Inside, так и Outside, подключенный в IB. – sehugg

0

Вы пытаетесь определить, нажаты ли кнопки или отпущены, пока вид UIAlert в настоящее время находится сверху, или он был уволен, а нажатие кнопки больше не реагирует?

+0

Попытка определить, отображается ли UIAlert при нажатии кнопки (потому что, когда это происходит, кнопка возвращается в нормальное состояние, но не срабатывает Touch Up) – sehugg

Смежные вопросы