2015-06-19 4 views
0

У меня есть UIImageView, у которого «Режим просмотра» установлен в «Аспект Fit» в Interface Builder. Я хочу добавить распознаватель жестов только к моему изображению внутри UIImageView. Чтобы уточнить, что я скажем:Добавление распознавателя жестов в UIImage, а не UIImageView

У меня есть UIImageView, у которого bounds.size.width = 100; и bounds.size.height = 100;, и у меня есть UIImage, размер которого равен 100x50. Поэтому, когда я добавляю свой UIImage в мой UIImageView, существует некоторое пространство 25 сверху и 25 снизу. Но я не хочу распознавать щелчок пользователя, когда он нажимает на эти места. Я просто хочу знать, когда пользователь нажал на UIImage.

Как я могу это сделать?

ответ

1

Как UIImage простирается от NSObject вы не можете добавить UITapGestureRecognizer к нему, вы должны добавить жест самого UIImageView. Тогда в любом из методов UIGestureRecognizer делегата: расположение

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; 

или

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; 

ПОЛУЧИТЬ Touch в UIImageView. Затем, используя CGPoint location = [_gesture locationInView:yourImageView], коснитесь точки, теперь получите рамку изображения с помощью ссылки this. Теперь проверьте, находится ли точка в кадре изображения или нет:

bool CGRectContainsPoint (CGRect rect, CGPoint point); 

Это может вам помочь.

+0

Это то, что я просил. Спасибо. Ты много решил для меня. –

+1

Я сделал это с помощью '- (BOOL) gestureRecognizerShouldBegin: (UIGestureRecognizer *) gestureRecognizer;' –

1

Вы должны добавить распознаватель жестов к изображению. Что вы можете сделать, это использовать жест распознавать методы делегата:

- gestureRecognizerShouldBegin: 
//OR 
- gestureRecognizer:shouldReceiveTouch: 

Вы можете выяснить, где пользователь постучал в ImageView и вычислить, если сенсорная приземлились внутри изображения в ImageView или вне изображения.

Вы можете сделать это, используя, используя следующие:

CGPoint tapPoint = [gestureRecognizer locationInView:imageView]; 
// use tap point to compute if it lands inside the image. 
+0

Спасибо, тоже. Но в другом ответе все части покрыты. Так что я принял другой. Данная ссылка для того, как рассчитать кадр изображения imageView и CGRectContainsPoint, включена в другой ответ. –

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