У меня есть метод touchhesBegan, настроенный для получения координат, когда пользователь касается экрана. Он отлично работает, за исключением случаев, когда я касаюсь UIButton. Как сделать так, чтобы кнопка запускала метод touchhesBegan?
Как вы получаете штрихи в координатах Beegan при срабатывании UIButton?
Ответ 1
Добавьте обработчики событий к кнопке, что-то вроде следующего,
[myButton addTarget:self action:@selector(dragBegan:withEvent:) forControlEvents: UIControlEventTouchDown];
[myButton addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents: UIControlEventTouchDragInside];
[myButton addTarget:self action:@selector(dragEnded:withEvent:) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
Управляйте событиями следующим образом: вы можете получить точку касания от события ev, как показано ниже,
- (void)dragBegan:(UIControl *)c withEvent:ev {
NSLog(@"dragBegan......");
UITouch *touch = [[ev allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
NSLog(@"Touch x : %f y : %f", touchPoint.x, touchPoint.y);
}
- (void)dragMoving:(UIControl *)c withEvent:ev {
NSLog(@"dragMoving......");
}
- (void)dragEnded:(UIControl *)c withEvent:ev {
NSLog(@"dragEnded......");
}
Это не мой собственный ответ. Я получил этот код из http://sree.cc/iphone/handling-touche-events-for-uibuttons-in-iphone и внес некоторые незначительные изменения.
Ответ 2
Попробуйте переопределить класс UIButton и в методе touchsBegan вызвать [super touchhesBegan..].