Узнайте, что позиция касания находится в Imageview

Я пытаюсь запустить код, когда мой палец перемещается в ту же позицию, где находится изображение.

Я определил положение изображения:

CGRect imagepos = myImage.frame;

И положение фактического положения касания:

UITouch *myTouch = [[touches allObjects] objectAtIndex: 0];
CGPoint currentPos = [myTouch locationInView: self.view];

Я попытался с CGPointEqualToPoint это не сработало. Тогда я попытался с CGRectContainsPoint он тоже не работал, потому что, когда imagepos и currentpos имеют одинаковые координаты x, мой "некоторый код" работает (мой палец не перемещен на изображение, у них были только одни и те же позиции x. Абсолютно другой).

Как я могу сказать, когда мой палец (также в методе touchesmoved) касался/перемещается в/находится в любом месте изображения, запускает какой-то код или метод?

Спасибо за ответы.

3 ответа

В вашем методе touchhesBegan вы можете попробовать что-то вроде этого:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 UITouch *touch = [touches anyObject];
 if([touch view] == myImgView)
 {
 NSLog(@"My Image was touched");
 }
}

Это говорит о том, когда ваш ImageView коснулся. Убедитесь, что для параметра userInteractionEnabled установлено userInteractionEnabled YES в вашем изображении.


Эй, попробуйте ниже -

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
 for (UITouch *touch in touches) {
 CGPoint location = [touch locationInNode:self]; //Now you got current location of click or tap

 if(location.y == YOUR_IMAGE_VIEW_POSITION_Y)
 {
 NSLog(@"Got the TOUCH...OOOoopsss !!!");
 } 
 }
}

Надеюсь, это помогло.


Существует функция...

CGRectContainsPoint(rect, point);

Он возвращает bool, если точка находится внутри прямоугольника.

Так что получите точку касания и запустите ее с помощью рамки imageView, чтобы узнать, было ли касание внутри изображения.

licensed under cc by-sa 3.0 with attribution.