CGRectContainsPoint () не возвращает TRUE, хотя прямоугольник содержит точку - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть UIView с UIImageView внутри него. Когда кто-то пытается перетащить вид изображения, вид изображения должен следовать за пальцем человека. Ниже приведен код из класса UIView.

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {

CGPoint touchPoint = [touch locationInView:self];


    if ( CGRectContainsPoint(self.thumb.frame, touchPoint))

        self.thumb.center = CGPointMake(touchPoint.x, self.thumb.center.y);

return YES;

}

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

Однако, когда я начинаю отслеживать за пределами imageView и перетаскиваю палец в imageView, просмотр изображения будет следовать за моим пальцем.

Почему CGRectContainsPoint () не работает, когда мой палец запускается при просмотре изображения?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011
CGPoint touchPoint = [touch locationInView:self.view];

self - это не представление (обычно), это контроллер представления.

Обратите внимание, что также предполагается, что self.view является суперпредставлением self.thumb. Если нет, то в целом вы можете использовать:

CGPoint touchPoint = [touch locationInView:[self.thumb superview]];
0 голосов
/ 24 ноября 2011

Как определяется прикосновение? Я использовал следующее (в рамках стандартного touchesBegan или touchesMoved), хотя self является ViewController.

UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0];
...