かなり広範なフォームを含むアプリがあります。50かそこらのエントリ。私の階層は次のようになります。ビューが重なっているため、フォームビューのテキストフィールドをクリックしてもカーソルが表示されません。
viewController.view(UIView)
svParent(UIScrollView)
セクション(UIView)
titlebar(UIView)/ contentWrapper(UIScrollView)(以下の兄弟はcontentWrapperの子です)
form(UIView)
textfield(UITextField)
textfield(UITextField)
textfield(UITextField)
...等々...
サブビュー上のオブジェクトにアクセスできるように、スーパービューでhitTestをオーバーライドするという概念は理解していますが、プログラムする方法が正確にはわかりません。
私のviewControllerでこれを追加しました:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
NSLog(@"ok");
return NO;
}
しかし、シミュレータウィンドウのどこをクリックしても、何もログに記録されません。他にやらなければならないことはありますか?そして、誰かがその後に何が起こるかを明確にすることができます-これは、適切に機能しているときに、最も低いサブビューがファーストレスポンダーのステータスを取得してアクティブになる(つまり、編集可能なテキストフィールドの場合)という自動魔法のようなものです。