タグ付けされた質問 「uiview-hierarchy」

7
hitTest:withEventを使用して、スーパービューのフレームの外側にあるサブビューにタッチをキャプチャする:
私の問題:EditView基本的にアプリケーションフレーム全体を占めるスーパービューとMenuView、下部〜20%だけを占めるMenuViewサブビューがButtonViewあり、実際にはMenuViewの境界外にある独自のサブビューが含まれています(このようなもの:)ButtonView.frame.origin.y = -100。 (注:のビュー階層のEditView一部ではない他のサブビューMenuViewがありますが、回答に影響する可能性があります。) あなたはおそらくすでに問題を知っています:ButtonViewがの範囲内にある場合MenuView(または、より具体的には、私のタッチがの範囲内にある場合MenuView)ButtonViewは、タッチイベントに応答します。タッチがMenuViewの範囲外(ただしButtonViewの範囲内)にある場合、はタッチイベントを受け取りませんButtonView。 例: (E)is EditView、すべてのビューの親 (M)is MenuView、EditViewのサブビュー (B)is ButtonView、MenuViewのサブビュー 図: +------------------------------+ |E | | | | | | | | | |+-----+ | ||B | | |+-----+ | |+----------------------------+| ||M || || || |+----------------------------+| +------------------------------+ (B)は(M)のフレームの外にあるため、(B)領域のタップは(M)に送信されません-実際、(M)はこの場合タッチを分析せず、タッチは階層内の次のオブジェクト。 目標:オーバーライドhitTest:withEvent:することでこの問題を解決できることを確認しましたが、正確な方法がわかりません。私の場合、(私の「マスター」スーパービュー)hitTest:withEvent:でオーバーライドする必要がありEditViewますか?またはそれをオーバーライドする必要がありますMenuView、タッチを受け取らないボタンの直接のスーパービューでがありますか?それとも私はこれについて間違って考えていますか? これに長い説明が必要な場合は、優れたオンラインリソースが役立ちます。ただし、AppleのUIViewのドキュメントは例外で、私には明確にされていません。 ありがとう!


8
サブビューのXを自動レイアウトの中央に配置すると、「制約の準備ができていません」とスローされます。
ペン先を介して初期化されているカスタムUIViewサブクラスがあります。 で-awakeFromNib、サブビューを作成し、そのスーパービューの中央に配置しようとしています。 [self setInteralView: [[UIView alloc] init]]; [[self internalView] addConstraint: [NSLayoutConstraint constraintWithItem: [self internalView] attribute: NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual toItem: self attribute: NSLayoutAttributeCenterX multiplier: 1 constant: 0]]; これが壊れて、次の出力が発生します。 2013-08-11 17:58:29.628 MyApp[32414:a0b] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0xc1dcc80 UIView:0xc132a40.centerX == MyView:0xc1315a0.centerX> When added to a view, the constraint's …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.