2013-08-04 2 views
0

У меня есть приложение, в котором пользователь может взаимодействовать со многими объектами. Это несколько UIButtons, несколько UILabels и много UIImageViews.Как идентифицировать событие касания кнопки от других событий касания

В центре внимания все взаимодействующие центры, касаясь объектов UIImageView. С прикосновением я могу перемещать изображения вокруг, говорить им делать то или это. Однако мое текущее препятствие заключается в том, чтобы знать, как правильно использовать приложение, чтобы различать касания, которые возникают, когда я касаюсь UIButton.

Почему? Ну, логика в событии Touches Began предназначена только для UIImageViews, однако в тот момент, когда я касаюсь кнопки или любого другого объекта, приложение интерпретирует касание так, как если бы оно произошло для объекта UIImageView.

Итак, мой подход сводится к следующему: есть ли хороший способ определить, произошло ли прикосновение к объекту UIButton, UIImageView, UILabel? Таким образом, я могу отфильтровать ненужные штрихи в своем приложении из соответствующих.

EDIT:

Код ниже описывает, как я захвачу сенсорное событие, однако я не знаю, как знать, от сенсорного события, будь то кнопка или вид, что я прикоснулся.

touch = [touches anyObject]; 
touchLocation = [touch locationInView:[self view]]; 
+0

Показать код касания. Испытываете ли вы тест, чтобы найти затронутый вид? – Wain

+0

Код довольно сложный, поскольку он обрабатывает и фиксирует штрихи, основанные на UIImageViews, который работает правильно. Проблема в том, что я понятия не имею, как отличить касание UIImage от UIButton. Есть ли событие касания, способ идентифицировать это? – AGE

+1

Как насчет gestureRecognizer: shouldReceiveTouch: от ссылки делегата распознавателя жестов; «Этот метод называется до касанияBegan: withEvent: вызывается для распознавателя жестов для нового касания». Вы можете использовать это, чтобы отфильтровать любые нежелательные штрихи, прежде чем получатель получит их. У меня такое чувство, что это слишком поздно для вас, но, возможно, это сработает. – timquinn

ответ

1

Чтобы узнать, нажата ли UIButton следить за этим:

-(void) touchBegan : (NSSet *) touches withEvent : (UIEvent *) even 
{ 

UITouch *touch = [touched anyObject]; 
UIView *touchedView = [touch view]; 

if([touchedView isMemberofClass : [UIButton class]) 
{ 
    //do something when button is touched 
} 
} 
1

Вызов hitTest:withEvent: на представлении с сенсорным событием, чтобы получить вид, что на самом деле трогают. Затем вы можете использовать isKindOfClass:, чтобы проверить, какой вид просмотра и ответить соответствующим образом.

1

вы можете использовать этот метод: -

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    if ([self pointInside:point withEvent:event]) { 
     //You clicked inside the object 
    } 
    return [super hitTest:point withEvent:event] 
} 

и телега уже дал вам объяснение этого ..

https://stackoverflow.com/a/18051856/1865424

+0

Я рассмотрю это решение, но оно довольно широкое. Можно ли использовать вышеупомянутый подход для отфильтровывания штрихов, которые встречаются только в объектах UIImageView? Раньше я никогда раньше не использовал этот подход. Также я нахожусь в отпуске, ограниченном доступе в Интернет, поэтому я опоздал на ответ. – AGE

+1

@AGE жаль нет ничего особенного в этом .. но вы можете проверить этот ответ тоже ..http: //stackoverflow.com/a/2793253/1865424 – Shivaay

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