D'accord, ce problème me rend fou.
Il faut environ 3 à 4 secondes pour que le clavier apparaisse après avoir touché mon UITextField
. Cela ne se produit que la première fois que le clavier apparaît depuis le lancement de l'application, puis l'animation démarre instantanément.
Au début, je pensais que c'était un problème de chargement de trop d'images, ou mon UITableView
, mais je viens de créer un tout nouveau projet avec seulement un UITextField
, et je rencontre toujours ce problème. J'utilise iOS 5, Xcode ver 4.2 et fonctionne sur un iPhone 4S.
Voici mon code:
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 20, 280, 30)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.delegate = self;
[self.view addSubview:textField];
}
@end
Est-ce un problème courant pour toutes les applications?
Pour le moment, la seule façon de l'améliorer un peu est d'être textField
devenu / démissionner premier intervenant viewDidAppear
, mais cela ne résout pas entièrement le problème - cela charge simplement le délai lorsque la vue se charge à la place. Si je clique sur textField
immédiatement lors du chargement de la vue, le problème persiste; si j'attends 3-4 secondes après le chargement de la vue avant de toucher le champ textField, je n'obtiens pas le délai.
Donc, le problème n'est PAS seulement limité à la première installation comme je l'avais pensé auparavant, mais se produit à chaque fois que l'application est lancée. Voici ma solution qui résout complètement le problème.
la source
Ouais, j'ai aussi eu quelques secondes de retard sur le dernier iPhone 4s. Ne paniquez pas. Pour certaines raisons, cela ne se produit que la première fois que l'application est chargée à partir de Xcode dans Debug. Quand j'ai fait Release, je n'ai pas de retard. Oublie ça ...
la source
Fastest, Smallest [-Os]
. Vous pouvez le changer leBuild Settings > Optimization Level
C'est un problème connu.
Le préchargement du clavier semble prometteur. Vérifiez le préchargement du UIKeyboard.
Quelques lectures supplémentaires:
L'affichage initial du clavier virtuel de l'iPhone est lent pour un UITextField. Ce hack est-il nécessaire?
Le clavier UITextField bloque la boucle d'exécution lors du chargement?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/12114-uitextfield-loooong-delay-when-first-tapped.html
la source
Vous pouvez utiliser la solution de Vadoff dans Swift en ajoutant ceci à didFinishLaunchingWithOptions:
Cela fonctionne pour moi dans iOS 8.
la source
Code dans le bloc ajouté à la file d'attente principale et exécuté de manière asynchrone. (ne pas verrouiller le thread principal)
la source
Voyez cette réponse . Ils suggèrent UIResponder + KeyboardCache . C'est simple et génial. Testé sur iOS 7.
la source
Un problème connexe, où un UIViewController serait lent à se présenter, a été résolu en utilisant la police système au lieu d'une police personnalisée sur UITextField. Peut-être que l'utilisation de la police système pourrait également résoudre ce problème?
la source
Ce bogue semble être corrigé dans iOS 9.2.1. Depuis la mise à niveau de mon appareil, je n'ai plus de délai entre le fait d'appuyer sur un champ de texte et l'apparition du clavier lorsque mon appareil est connecté à mon ordinateur.
la source
Cette réponse sélectionnée provoque le crash de BAD_EXC sur iOS 11 - supprimer de l'application pour corriger
la source
Vous pouvez ajouter le code ci-dessous lorsque la vue de viewController a été chargée, comme viewDidAppear.Pas seulement application: didFinishLaunchingWithOptions:
la source