iOS x координата пальца при нажатии на UIButton - PullRequest
1 голос
/ 04 марта 2012

У меня есть кнопка UIB.Как я могу получить x-координату пальца, когда пользователь нажимает на указанную кнопку.Я думаю, что это будет связано с touchesBegan, но как я могу получить значение, только если на кнопке произошло "touchesBegan"?И если есть способ (не просто контролировать x, y, ширину и высоту кнопки и проверять, было ли мое касание в этой области), мне нужно будет отключить взаимодействие пользователя с кнопкой, чтобы код мог обрабатывать ее, а невстроенный в XIB вещи.Спасибо!

1 Ответ

9 голосов
/ 04 марта 2012

«Касание», как правило, считается касанием внутри кнопки с последующим касанием внутри кнопки. Вам нужно выяснить, хотите ли вы событие касания изнутри или событие касания изнутри (или оба).

Допустим, вам нужно событие касания изнутри. Напишите такой метод в вашем контроллере вида:

- (IBAction)buttonWasTouched:(UIButton *)button forEvent:(UIEvent *)event {
    NSSet *touches = [event touchesForView:button];
    NSLog(@"button:%@ touches:%@", button, touches);
}

Если вы создаете кнопку в кончике, удерживайте нажатой клавишу «Control» и подключите ее выход «Touch Down» к действию buttonWasTouched:forEvent: на контроллере представления (который, вероятно, является владельцем файла).

Если вы создаете кнопку в коде, отправьте addTarget:action:forControlEvents: на кнопку, чтобы связать ее событие UIControlEventTouchDown с действием buttonWasTouched:forEvent: контроллера представления.

Если вы хотите поймать событие «касание изнутри», подключите его выход «Touch Up Inside» в наконечнике или используйте UIControlEventTouchUpInside в коде.

...