Frage

Ich habe ein UITextField in einer Querformatansicht. Wenn ich unten rechts in der UIKeyboard-Ansicht auf die Schaltfläche "Tastatur schließen" drücke, verschwindet die Tastatur NICHT.Gibt es eine Möglichkeit, programmgesteuert darauf zu achten, wann diese Taste gedrückt wurde?Oder gibt es eine Verbindung, die ich nicht sehe und die diese Tastatur zum Verschwinden bringt? Dies ist iOS 4 und XCode 4. Danke.

War es hilfreich?

Lösung

Ich hatte heute das gleiche Problem und habe mich gefragt, warum es in Apples KeyboardAccessory-Beispielcode funktioniert. Also habe ich Reverse Engineering gemacht.Der ViewController war nicht der Fehler, den ich in meinem Fall gemacht habe.

In der Implementierung von UIApplicationDelegate gibt es den Einstiegspunkt der Anwendung, an dem der Root-Viewcontroller und das Fenster - (void) applicationDidFinishLaunching:(UIApplication *)application einrichten.Wenn Sie vergessen haben, dem Fenster die Ansicht "Root Viewcontroller" als Unteransicht hinzuzufügen, funktioniert die Schaltfläche "Tastatur schließen" in keiner Ansicht Ihrer App.

@class ViewController;

@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> {
  UIWindow *window;
  ViewController *viewController;
}

  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet ViewController *viewController;

@end

...

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

  [window addSubview:viewController.view];
  [window makeKeyAndVisible];
}

Bitte vergessen Sie nicht, die Ausgänge in der xib-Hauptdatei einzurichten.

Ich weiß nicht, warum dies mit dem Verhalten von Tastaturen zusammenhängt.Aber meine Theorie ist, dass die Responderkette nicht mit dem Fenster verbunden ist, sondern es braucht.

Andere Tipps

Um die Tastatur mit der Schaltfläche Tastatur schließen zu schließen, müssen Sie die Delegate-Methode implementieren

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //Check if your text field is first responder, and if it is, have it resign
}

Alternativ können Sie verwenden, wenn Sie die Tastatur durch Tippen außerhalb der Tastatur schließen möchten

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UIView* view in self.view.subviews)
    {
        if ([view isKindOfClass:[UITextField class]]) {
            [view resignFirstResponder];
        }

        if ([view isKindOfClass:[UITextView class]]) {
            [view resignFirstResponder];
        }
    }
}

Sie müssen dem Textfeld, das die Tastatureingabe akzeptiert, mitteilen, dass es nicht mehr der Ersthelfer ist.

[UITextField resignFirstRepsonder];

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top