更改视图的命中测试序列

时间:2013-06-27 20:17:37

标签: objective-c uitextview hittest

我有自定义可拖动的UITextViews,最新拖动的UITextView有最大的zPosition(textView.layer.zPosition),以确保它出现在其他textViews之上,但当我将textViews拖到彼此之上,然后尝试移动一个出现在顶部,最新添加(到superview)textView的hitTest首先运行,应用程序决定它被击中,即使我需要一个最大的zPosition(最新移动的)

我尝试修改hitTest以检查触摸位置上是否有其他textViews具有更大的zPosition,但hitTest根据textView的边界给出位置(左上角是x = 0 y = 0)

那么有没有办法改变序列命中测试运行而不删除视图并再次添加它,或者你能想到另一种方法来确保正确的视图被击中

example situation

2 个答案:

答案 0 :(得分:1)

好的,我使用textView自己的框架修复了hitTest。因为来自hittest的点是基于textView的界限给我的位置,

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    //Real location of point in superview
    CGPoint pointInEditingView = CGPointMake(self.frame.origin.x+point.x, self.frame.origin.y+point.y);

然后我检查了触摸位置上是否有其他textViews具有更大的zPosition值,如果有

则返回nil

答案 1 :(得分:0)

使用最新移动的bringSubviewToFront在您的超级视图中使用UITextView