Ich habe eine UIView (die 'Containeransicht'), die mehrere 'Unteransichten' enthält. Ich möchte der Containeransicht einen UITapGestureRecognizer hinzufügen, sodass dieser aktiviert wird, wenn ich die Region innerhalb der Containeransicht, aber außerhalb der Teilansichten berühre.Subviews von UIGestureRecognizer ausschließen
Im Moment wird durch Berühren einer beliebigen Stelle in der Containeransicht, einschließlich innerhalb der Teilansichten, der Gestenerkenner aktiviert.
Die Implementierung sieht ungefähr wie folgt aus: In der Steuerung:
ContainerView *containerView = [[ContainerView alloc] initWithSubViews:array];
UITapGestureRecognizer *tap = [UITapGestureRecognizer alloc] initWithTarget:self action:@selector(someSelector)];
[containerView addGestureRecognizer:tap];
[self.view addSubView:containerView];
In ContainerView.m
-(id)initWithSubviews:(NSArray *)array {
for (subView *s in array) {
[self addSubView:s];
}
return self;
}
Ich denke, das Problem tritt auf, weil die Gestenerkenner hinzugefügt wird, nachdem die Subviews sind. Wenn das wahr ist, dann würde die Lösung die initWithSubViews-Methode in zwei separate brechen müssen, die ich lieber vermeiden würde.
Danke
Dies ist teuer und haarig, wenn viele Subviews überprüft werden müssen. – CodaFi
yup..ich sehe .. ich sehe keine anderen guten Lösungen .. wenn Sie haben, fühlen Sie sich frei zu teilen .. :) –