2016-08-31 1 views
0

Ich habe eine UITextFields in der navigationitem benutzerdefinierten titleview. Wenn ich es berühre, ist es auf der rechten Seite, es ist auch fokussiert. Ich teste die Situation in der Hittest-Methode. Hier sind die Daten.Warum wird das UITextField der benutzerdefinierten navigationItem-Titelansicht fokussiert, wenn die Berührung außerhalb der Grenzen erfolgt?

hitbounds field point: {269, 6.5}, bounds:{{0, 0}, {255, 35}}; searchView point: {59, 6.5}, bounds: {{0, 0}, {45, 35}}; searchButton: {58, 11}, bounds: {{0, 0}, {44, 44}} 

Feldansicht enthält eine Suchansicht in der rechten Spalte, die eine Suchschaltfläche enthalten.

Feldpunkt: {269, 6.5}, Grenzen: {{0, 0}, {255, 35}};
Der Punkt ist nicht in seinen Grenzen klar. Aber das Feld wird geöffnet und die Tastatur erscheint.

Und ich schließlich finden, wenn die Tastatur erscheinen, die Methoden selbst nicht pointInside:(CGPoint)point withEvent:(UIEvent *)event hitTest:(CGPoint)point withEvent:(UIEvent *)event

Warum genannt? Vielen Dank.

Antwort

0

bekam ich eine Ahnung von Why does UINavigationBar steal touch events?

I Navigationsleiste stehlen Berührungsereignis erraten und schicken das Berührungsereignis direkt an textfield.

Also hier ist die Lösung. Es läuft gut.

@implementation UINavigationBar(Xxxxxx) 

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *v = [super hitTest:point withEvent:event]; 
    return v == self ? nil: v; 
} 

@end 
Verwandte Themen