0

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

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

那么有没有一种方法可以在不删除视图并再次添加视图的情况下更改命中测试运行的顺序,或者您是否可以考虑另一种方法来确保正确的视图被命中

示例情况

4

2 回答 2

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);

然后我检查触摸位置上是否还有其他具有较大 zPosition 值的 textView,如果有则返回 nil

于 2013-06-28T07:07:55.077 回答
0

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

于 2013-06-27T21:30:46.183 回答