3

この問題はiOS6で発生しました。それを再現するには、日本語(かな)キーボードでテキストを入力し、提案が表示されたら[ロック]ボタンを押す必要があります。ロックを解除した後、ユーザーはアプリケーションではなくアプリケーションダッシュボードに表示されます。アプリケーションアイコンを押すと、再度ロードされます-ロックを押すとアプリがクラッシュしました。これは、Notesのようなアップルアプリにも当てはまります

クラッシュログ:

Application Specific Information:
YOUR_APP was suspended with locked system files: 
/private/var/mobile/Library/Keyboard/PhraseLearning_ja_JP.db/sqlite.db
/private/var/mobile/Library/Keyboard/BigramLearning_ja_JP.db/sqlite.db

iOSは、提案をより知的にするためにユーザーの選択をdbに保存しようとしているようですが、書き込みができない場合はdbに書き込みます。

私はすでにAppleにバグを投稿しましたが、いつ修正されるかは誰にもわかりません

あなたはそれがAppleの問題であるとあなたのアプリケーションを使っている人々にただ言うことができます-あなたはそれを解決する必要があります。applicationWillResignActiveでキーボードを非表示にして、アプリが読み込まれたときに表示しようとしましたが、あまり役に立ちませんでした。助言がありますか?

アップデート。私は彼らが6.0.1でそれを修正することを望んでいましたが、残念ながらNO :-(

4

2 に答える 2

2

「タスク完了」を使用してバックグラウンドに入るのを遅らせます。
アディショナルタイム(10分)はキーボードを非表示にします。回避策です。

例:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Acquired additional time
    UIDevice *device = [UIDevice currentDevice];
    BOOL backgroundSupported = NO;
    if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
        backgroundSupported = device.multitaskingSupported;
    }

    if (backgroundSupported) {
        backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
            [application endBackgroundTask:backgroundTask];
            backgroundTask = UIBackgroundTaskInvalid;
        }];
    }

    // Hide keyboard 
    [self.textField resignFirstResponder];
}
于 2012-10-10T07:02:03.530 に答える
0

他の回答とそのコメントを拡張すると、これがうまくいくことがわかりました。どのテキスト フィールドがアクティブだったかを知る必要がないという利点があります。

if ([[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending) {
    if (backgroundTask != UIBackgroundTaskInvalid)
        [application endBackgroundTask:backgroundTask];

    backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:backgroundTask];
        backgroundTask = UIBackgroundTaskInvalid;
    }];
}
于 2013-01-22T04:47:39.323 に答える