我正在使用[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/