我正在使用相对于其超视图在屏幕上[aSubview touchesBegan]
移动aSubview
的位置.它的超级视图并不比子视图本身大.这很简单,如下面的代码段所示:
UITouch* touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:[self superview]];
self.center = touchPoint;
Run Code Online (Sandbox Code Playgroud)
然而,一旦a aSubview
被移动,只要它的任何部分超出其超视图的范围,该部分中的触摸就不再注册.换句话说,touchesBegan
不再开火.aSubview
无论在哪里移动与其超级视图相关,我都希望能够进行注册.
有什么想法吗?
霍华德
mcpunky的答案几乎是好的,除了你不能使pointInside
函数总是返回YES.这样,视图将拦截所有触摸.
相反,需要做更多的检查:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return CGRectContainsPoint(self.subviewOutsideMe.frame, point) || CGRectContainsPoint(self.bounds, point);
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是正确的方法,但这肯定是一种方法。
即使在您的父对象中,也可以监听touchesBegan。如果您收到一个事件,请通过自己调用其 TouchsBegan 将其传递到子视图。
归档时间: |
|
查看次数: |
1744 次 |
最近记录: |