Okay, dieses Problem hat mich verrückt gemacht.
Es dauert ungefähr 3-4 Sekunden, bis die Tastatur erscheint, nachdem ich meine berührt habe UITextField
. Dies tritt nur beim ersten Aufrufen der Tastatur seit dem Start der App auf. Danach wird die Animation sofort gestartet.
Zuerst dachte ich, es sei ein Problem, zu viele oder meine Bilder zu laden UITableView
, aber ich habe gerade ein brandneues Projekt mit nur einem erstellt UITextField
, und dieses Problem tritt immer noch auf. Ich verwende iOS 5, Xcode Version 4.2 und laufe auf einem iPhone 4S.
Das ist mein 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
Ist dies ein häufiges Problem für alle Apps?
Im Moment kann ich es nur verbessern, indem ich textField
Ersthelfer geworden bin / zurückgetreten bin viewDidAppear
, aber das löst das Problem nicht vollständig - es lädt nur die Verzögerung, wenn stattdessen die Ansicht geladen wird. Wenn ich beim Laden textField
der Ansicht sofort auf klicke, wird das Problem weiterhin angezeigt. Wenn ich nach dem Laden der Ansicht 3-4 Sekunden warte, bevor ich das Textfeld berühre, wird die Verzögerung nicht angezeigt.
Das Problem beschränkt sich also NICHT nur auf die erste Installation, wie ich zuvor gedacht hatte, sondern tritt jedes Mal auf, wenn die App gestartet wird. Hier ist meine Lösung, die das Problem vollständig löst.
quelle
Ja, ich habe auch ein paar Sekunden Verzögerung auf dem neuesten iPhone 4s. Keine Panik. Aus bestimmten Gründen geschieht dies nur beim ersten Laden der App von Xcode in Debug. Als ich Release gemacht habe, bekomme ich keine Verzögerung. Vergiss es einfach...
quelle
Fastest, Smallest [-Os]
. Sie können es ändern aufBuild Settings > Optimization Level
Dies ist ein bekanntes Problem.
Das Vorladen der Tastatur scheint vielversprechend. Überprüfen Sie das Vorladen des UIKeyboards.
Einige zusätzliche Lesematerialien:
Die anfängliche Anzeige der virtuellen iPhone-Tastatur ist für ein UITextField langsam. Ist dieser Hack erforderlich?
UITextField-Tastatur blockiert Runloop beim Laden?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/12114-uitextfield-loooong-delay-when-first-tapped.html
quelle
Sie können die Vadoff-Lösung in Swift verwenden, indem Sie diese zu didFinishLaunchingWithOptions hinzufügen:
Es funktioniert für mich in iOS 8.
quelle
Code im Block zur Hauptwarteschlange hinzugefügt und asynchron ausgeführt. (Haupt-Thread nicht gesperrt)
quelle
Siehe diese Antwort . Sie schlagen UIResponder + KeyboardCache vor . Es ist einfach und großartig. Getestet auf iOS 7.
quelle
Ein verwandtes Problem, bei dem ein UIViewController nur langsam angezeigt wird, wurde gelöst, indem die Systemschrift anstelle einer benutzerdefinierten Schrift auf dem UITextField verwendet wurde. Vielleicht funktioniert die Verwendung der Systemschriftart auch für dieses Problem?
quelle
Dieser Fehler scheint in iOS 9.2.1 behoben zu sein. Seit dem Upgrade meines Geräts habe ich keine Verzögerung mehr zwischen dem Tippen auf ein Textfeld und dem Anzeigen der Tastatur, wenn mein Gerät an meinen Computer angeschlossen ist.
quelle
Diese ausgewählte Antwort führt unter iOS 11 zum Absturz von BAD_EXC - aus der App entfernen, um das Problem zu beheben
quelle
Sie können den folgenden Code hinzufügen, wenn die Ansicht von viewController geladen wurde, z. B. viewDidAppear. Nicht nur die Anwendung: didFinishLaunchingWithOptions:
quelle