1. ホーム
  2. objective-c

[解決済み] UITextFieldのキーボードアニメーションの初期に超遅い遅延が発生する。

2022-04-21 21:55:13

質問

さて、この問題には頭を悩ませています。

をタッチしてからキーボードが表示されるまで、だいたい3〜4秒かかります。 UITextField . この現象は、アプリを起動してから初めてキーボードがポップアップしたときのみ発生し、その後は瞬時にアニメーションが開始されます。

最初は、画像の読み込みが多すぎるか、私の UITableView しかし、私は新しいプロジェクトを作成し、そのプロジェクトには UITextField この問題はまだ残っています。iOS 5、Xcode ver 4.2、iPhone 4Sで動作しています。

これは私のコードです。

#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

これはすべてのアプリに共通する問題なのでしょうか?

今現在、ある程度良くするためには textField でファーストレスポンダーになる/辞する viewDidAppear しかし、これでは問題が完全に解決されるわけではありません。もし私が textField ビューがロードされた後、すぐにtextFieldに触れると、問題が発生します。ビューがロードされてから3-4秒待ってからtextFieldに触れると、遅延は発生しません。

解決方法は?

つまり、私が以前考えていたように、この問題は最初のインストール時に限られたものではなく、アプリを起動するたびに発生するのです。以下は、この問題を完全に解決するための私の解決策です。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Preloads keyboard so there's no lag on initial keyboard appearance.
  UITextField *lagFreeField = [[UITextField alloc] init];
  [self.window addSubview:lagFreeField];
  [lagFreeField becomeFirstResponder];
  [lagFreeField resignFirstResponder];
  [lagFreeField removeFromSuperview];
}