Objective c 覆盖UIView上的hitTest

Objective c 覆盖UIView上的hitTest,objective-c,hittest,Objective C,Hittest,我有一个应用程序,它将有一个非常广泛的形式。大约50个条目。我的层次结构是这样的。由于存在重叠视图,因此单击表单视图中的文本字段时不会在其中包含光标: viewController.view UIView SVUIScrollView 截面视图 titlebarUIView/contentWrapperUIScrollView同级以下是contentWrapper的子级 formUIView textfieldUITextField textfieldUITextField textfieldU

我有一个应用程序,它将有一个非常广泛的形式。大约50个条目。我的层次结构是这样的。由于存在重叠视图,因此单击表单视图中的文本字段时不会在其中包含光标:

viewController.view UIView

SVUIScrollView

截面视图

titlebarUIView/contentWrapperUIScrollView同级以下是contentWrapper的子级

formUIView

textfieldUITextField

textfieldUITextField

textfieldUITextField

……等等

我理解在superview上覆盖hitTest的概念,以便可以访问子视图上的对象,但我不确定如何对其进行编程

在我的viewController中,我添加了以下内容:

 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    NSLog(@"ok");
    return NO;
}
但无论我在模拟器窗口中单击什么位置,都不会记录任何内容。我还有别的事要做吗?然后,有人能澄清一下之后会发生什么吗?这是一种自动操作吗?当功能正常时,最低的子视图将获得第一响应者状态并变为活动状态,即在文本字段可编辑的情况下。

-UIView*hitTest:cgpointpointwithevent:UIEvent*event

AFAIK它是在UIView子类中实现的,而不是在view控制器中实现的

为了更好地理解层次结构,

-UIView*hitTest:cgpointpointwithevent:UIEvent*event

AFAIK它是在UIView子类中实现的,而不是在view控制器中实现的

为了更好地理解层次结构,

首先,hitTest:是UIView的一种方法,而不是UIViewController,因此您需要一个自定义UIView子类,可能位于视图层次结构的顶部

其次,该方法应该返回一个视图,而不是BOOL,因此返回NO没有多大意义。

首先,hitTest:是UIView的一个方法,而不是UIViewController,因此您需要一个自定义UIView子类,可能位于视图层次结构的顶部


其次,该方法应该返回一个视图,而不是BOOL,因此返回NO没有多大意义。

我明白你的意思,但这增加了我的困惑-我有viewController,它实例化了VC的一个子类,然后在其中添加子视图。所以层次结构看起来像这个VC->VC~UIScrollV~UIView~UIScrollV-我应该使用第二个VC直接转到滚动视图并在那里实现命中测试覆盖吗?这意味着视图正在代码中实例化。你需要对视图进行子类化,然后在那里覆盖它,你能告诉我你的目的吗?我正在构建一个手风琴式视图来管理一个大表单,除了标题栏外,其他部分都是隐藏的,单击标题栏,整个部分都会显示出来。我没有提到每个部分中的文本字段。我认为这很容易实现,使用触摸事件。你也可以使用手势识别器来处理此类情况,我明白你的意思,但这增加了我的困惑-我有viewController,它实例化了VC的一个子类,然后在其中添加子视图。所以层次结构看起来像这个VC->VC~UIScrollV~UIView~UIScrollV-我应该使用第二个VC直接转到滚动视图并在那里实现命中测试覆盖吗?这意味着视图正在代码中实例化。你需要对视图进行子类化,然后在那里覆盖它,你能告诉我你的目的吗?我正在构建一个手风琴式视图来管理一个大表单,除了标题栏外,其他部分都是隐藏的,单击标题栏,整个部分都会显示出来。我没有提到每个部分中的文本字段。我认为这很容易实现,使用触摸事件。你也可以使用手势识别器来处理这种情况,我正在处理hitTest和pointInside,但在发布时忘记清理,因此返回错误。显然,我对在哪里实现该方法感到困惑。我以前真的没有做过hitTest…很明显:DI搞乱了hitTest和pointInside,在我发布时忘了清理它,所以回复很差。显然,我对在哪里实现该方法感到困惑。以前真的没有做过HIT测试…很明显:D