2013-06-27 35 views
0

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

我试图修改则hitTest,以检查是否有关于触摸位置其他textViews与更大的z向位置,但是则hitTest基于TextView的的边界(左上角为x = 0 Y = 0)

给位置那么,有没有办法改变击中测试运行,而无需去除的看法,然后重新添加的顺序,或者你能想到的另一种方式,以确保正确的观点被击中

example situation

回答

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具有较大z位置值,如果有

0

使用bringSubviewToFront与你的上海华最新移动UITextView

+0

我也尝试返回nil,没有工作 – Efesus

+0

它应该工作,你可以添加一个示例项目或相关的源代码? – Danilo

+0

我每次使用textView时都会使用[editingView bringSubviewToFront:[textViewArray objectAtIndexPath:maxZPositionTextView]],但它不起作用 – Efesus