0

カスタムのドラッグ可能なUITextViewがあり、最後にドラッグされたUITextViewには最大のzPosition(textView.layer.zPosition)があり、他のtextViewの上に表示されるようにしていますが、textViewを互いの上にドラッグしてから移動しようとすると一番上に表示され、(スーパービューに) 最新に追加された textView の hitTest が最初に実行され、アプリケーションはヒットしたと判断します。

より大きなzPositionを持つタッチ位置に他のtextViewがあるかどうかを確認するためにhitTestを変更しようとしましたが、hitTestはtextViewの境界に基づいて位置を提供します(左上隅はx = 0 y = 0です)

ビューを削除して再度追加せずにシーケンスヒットテストの実行を変更する方法はありますか、または正しいビューが確実にヒットするようにする別の方法を考えることができますか

例の状況

4

2 に答える 2

1

わかりました、textView の独自のフレームを使用して 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 値を持つタッチ位置に他の textViews があるかどうかを確認し、存在する場合は nil を返しました

于 2013-06-28T07:07:55.077 に答える
0

bringSubviewToFront最新の移動済みのスーパービューで使用しますUITextView

于 2013-06-27T21:30:46.183 に答える