Domanda

Ho un UITextField in una vista orizzontale e quando premo il pulsante "ignora tastiera" in basso a destra nella vista UIKeyboard, la tastiera NON scompare.C'è un modo per ascoltare a livello di codice quando è stato premuto questo tasto?O c'è una connessione che non vedo che farà scomparire questa tastiera? Questo è iOS 4 e XCode 4. Grazie.

È stato utile?

Soluzione

Ho avuto lo stesso problema oggi e mi sono chiesto, perché funziona nel codice di esempio dell'accessorio per tastiera di Apple. Quindi ho fatto il reverse engineering.Il ViewController non è stato l'errore che ho fatto nel mio caso.

Nell'implementazione di UIApplicationDelegate c'è il punto di ingresso dell'applicazione, dove root viewcontroller e window verranno impostati - (void) applicationDidFinishLaunching:(UIApplication *)application.Se hai dimenticato di aggiungere la vista root viewcontroller alla finestra come sottoview, il pulsante ignora tastiera non funzionerebbe in nessuna vista della tua 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];
}

Per favore, non dimenticare di impostare le uscite nel file xib principale.

Non so perché questo sia correlato al comportamento delle tastiere.Ma la mia teoria è che la catena del risponditore non è collegata alla finestra, ma ha bisogno.

Altri suggerimenti

Per chiudere la tastiera utilizzando il pulsante Ignora tastiera è necessario implementare il metodo delegato

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

In alternativa, se desideri chiudere la tastiera toccando al di fuori di essa, utilizza

-(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];
        }
    }
}

devi dire al campo di testo che accetta l'input da tastiera di non essere più il primo risponditore.

[UITextField resignFirstRepsonder];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top