Как вы получаете координаты touchSegan при срабатывании кнопки UIB? - PullRequest
22 голосов
/ 22 декабря 2010

У меня есть метод touchesBegan, настроенный для получения координат, когда пользователь касается экрана. Это прекрасно работает, кроме случаев, когда я касаюсь UIButton. Как сделать так, чтобы кнопка тоже вызывала метод touchesBegan?

Ответы [ 2 ]

49 голосов
/ 22 декабря 2010

Добавьте обработчики событий к кнопке, что-то вроде следующего,

[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 и внес некоторые незначительные изменения.

0 голосов
/ 22 декабря 2010

Попробуйте переопределить класс UIButton и в вызове метода touchesBegan [super touchesBegan ..].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...