icon - scope bar ios




iOS-如何預加載鍵盤? (3)

一旦用戶抱怨我的應用程序緩慢加載鍵盤。 這是禁用鍵盤動畫的一個小技巧:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // ...

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(willShowKeyboard:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didShowKeyboard:)
                                                 name:UIKeyboardDidShowNotification
                                               object:nil];

    // ...
}


- (void)willShowKeyboard:(NSNotification *)notification
{
    [UIView setAnimationsEnabled:NO];
}

- (void)didShowKeyboard:(NSNotification *)notification
{
    [UIView setAnimationsEnabled:YES];
}

它可能無法直接回答問題,因為鍵盤本身位於我的示例的主UI中,而緩存不是我的選擇。 然而,整體響應能力得到改善。

問題

在大多數iPhone應用程序中,第一次出現鍵盤時會出現相當長的延遲(可能是創建鍵盤需要相當多的功能,即使在iPhone 4上也是如此)。

大多數人看起來都很好。 我不是,它真的讓我感到煩惱 - 以及我的應用程序呈現方式,用戶會非常困惑,他們第一次點擊文本字段時幾秒鐘都沒有發生任何事情。


我試過的

谷歌搜索引出了一個解決方案 - 不幸的是,從iOS 4開始這是無效的( 見這裡 )。

我不希望這個解決方案很容易找到,如果我可以直接給我一個賞金。 如果有人想出解決方案,我會非常激動。 解決方案需要做的就是在用戶不知情的情況下加載鍵盤。


所以..

任何想法都表示讚賞。 完整的工作代碼(適用於iOS 4和5)值得賞心悅目(即使賞金必須在以後出現!)。

如果找到解決方案,我計劃創建一個自包含的“KeyboardPreloader”類,人們可以將其放入他們的項目中,並使用一行代碼預加載鍵盤:)


使textfield成為firstResponder,然後在viewdidload中將其重新簽名..當鍵盤再次加載時,這似乎沒有延遲...

- (void)viewDidLoad
{
    [super viewDidLoad];

    [textField becomeFirstResponder];
    [textField resignFirstResponder];
        // Do any additional setup after loading the view, typically from a nib.
}

這是我做的:

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

UITextField初始鍵盤動畫的超級慢延遲/延遲





uikeyboard