2012-10-04 155 views
3

问题出现在iOS 6上。要重现该问题,需要使用日语(假名)键盘输入文本,并在出现建议时按下'锁定'按钮。解锁用户后,应用程序仪表板而不是应用程序。如果按下应用程序图标,它会再次加载 - 按下锁定时应用程序崩溃。这是真实的,即使对于苹果应用程序,如注当使用日文键盘时,应用程序崩溃锁定

崩溃日志:

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为单位提出建议,更多的智力,但其写入到数据库时,它可以不写。

我已经发布的bug苹果已经但是没有人知道他们什么时候修复它

你可以只是使用你的应用程序,这是苹果的问题,人家说 - 你需要去解决它。我尝试在applicationWillResignActive上隐藏键盘,并在应用程序加载时显示它,但没有多大帮助。有什么建议么?

UPDATE。在另外的时间(10分钟),我希望他们将修复它在6.0.1可惜没:-(

+0

看来这个问题已经在IOS6.1中解决了,但是我们不知道它们修复了哪个版本? 6.02? 6.03?任何详细信息?非常感谢。 – flypig

回答

2

使用“任务完成”推迟进入后台。
隐藏键盘。 这是解决办法。

例子:

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

我认为需要更多的代码。 如果返回 - >前 - >在10分钟内返回(更多两次...), 然后n次backgroundTasks创建。 而“backgroundTask = [应用程序beginBackgroundTa ...”导致泄漏前一个背景任务。 所以。然后调用“backgroundTask = [应用程序beginBackgroundTa ...” 检查“backgroundTask!= UIBackgroundTaskInvalid”并调用endBackgroundTask:。 怎么样? – TopChul

+0

这似乎工作,即使没有resignFirstResponder!所有你需要的是开始后台任务。 –

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; 
    }]; 
} 
相关问题