【问题标题】:App freezing when clicked on done button after selecting row from UIPickerView从 UIPickerView 选择行后单击完成按钮时应用程序冻结
【发布时间】:2017-07-07 07:11:29
【问题描述】:

我有由UIPickerViewDone button 组成的视图,它作为inputView 分配给textField。从选择器视图中选择任何行并单击Done 后,应用程序意外地是freezing。我附上了冻结时的堆栈跟踪屏幕截图。如果这是由于一些奇怪的线程操作,请告知。

【问题讨论】:

  • 显示您的代码。并在哪条线上崩溃。崩溃后显示控制台日志。
  • 应用程序正在冻结而不是崩溃......它对按钮的简单完成操作。 6-7 秒后一切正常。
  • 添加完成按钮点击动作的代码。你正在做一些操作,它阻塞了主线程
  • 我没有执行任何代码完成操作。只需从第一行返回。应用仍然冻结。
  • 完成按钮上有 API 调用吗?

标签: ios objective-c iphone uibutton


【解决方案1】:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//here everything you want to perform in background

dispatch_async(dispatch_get_main_queue(), ^{ 
    //call back to main queue to update user interface
});
});

我认为这对你有帮助: 查看堆栈溢出的这个 url

enter link description here

【讨论】:

    【解决方案2】:

    这个问题终于解决了。我的- (void)keyboardWillHide:(NSNotification *)notification 通知方法中有以下代码导致应用程序冻结。

        [UIView animateWithDuration:keyboardAnimationDuration.floatValue animations:^{
    
        self.tableView.contentInset = UIEdgeInsetsZero;
    
        self.tableView.scrollIndicatorInsets =  UIEdgeInsetsZero;
    
        }];
    

    删除[UIView animateWithDuration:keyboardAnimationDuration.floatValue animations:^{}];后,应用冻结问题得到解决

    最后,下面的代码工作了,现在应用程序不再冻结了。

        self.tableView.contentInset = UIEdgeInsetsZero;
    
        self.tableView.scrollIndicatorInsets =  UIEdgeInsetsZero;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多