我正在使用[aSubview touchesBegan]在屏幕上相对于其superview移动aSubview的位置。它的 super View 并不比 subview 本身大很多。如下面的代码片段所示,这非常简单:

    UITouch* touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:[self superview]];
    self.center = touchPoint;

但是,一旦aSubview移动,只要它的任何部分超出其父 View 的范围,该部分的触摸就不再注册。换句话说,touchesBegan不再触发。我希望aSubview的触摸信息能够注册,无论它相对于其 super View 的位置在哪里。

有什么想法吗?
霍华德

最佳答案

mcpunky的答案几乎是不错的,除了您可以 NOT 使pointInside函数始终返回YES。这样, View 将拦截所有触摸。

取而代之的是,您需要做一些更精细的检查:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{

    return CGRectContainsPoint(self.subviewOutsideMe.frame, point) || CGRectContainsPoint(self.bounds, point);

}

关于iphone - 当 View 移出其 super View 时,touchesBegan停止工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4422932/

10-11 07:54