Узнайте, что позиция касания находится в 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.