【问题标题】:UITextField causing app to freeze on iOS 8UITextField 导致应用程序在 iOS 8 上冻结
【发布时间】:2015-07-23 01:06:50
【问题描述】:

我正在开发一个支持 iOS 7 和 8 的应用程序。该应用程序在 iOS 7 上运行良好,但是当我在 iOS 8 上运行它时,当我按下 UITextFields 之一时它会冻结。

我已经阅读了其他关于没有 UITextField 作为其自己的代表的答案。这是其中一个答案:Application freezes after editing custom UITextField

但是为了测试这一点,我将一个新的UITextField 拖到应用程序中并且没有设置委托。我还拖了一个UIButton

当我点击UIButton 时,一切都很好。但是,当我单击UITextField(没有设置委托的那个)时,应用程序仍然冻结。

任何帮助将不胜感激。

【问题讨论】:

  • 你能在应用被冻结时发布堆栈跟踪吗?点击 Xcode 下方的“暂停”按钮,您将在左侧窗格中看到堆栈。
  • 和leo说的一样,但是使用了异常断点(因为EXC_BAD_ACCESS很可能是递归调用冻结app引起的)
  • 我认为在堆栈溢出的情况下不会抛出 EXC_BAD_ACCESS。此外,@pls 提到该应用程序已冻结,没有崩溃。
  • 为 Leo 的评论干杯。我已经暂停了应用程序,我发现了问题。我会留下这个问题的答案。感谢 Schemetrical 提供更多信息。
  • 是的,在这种情况下,Leo 是正确的。应用没有崩溃。

标签: ios objective-c ios8 uitextfield ios-simulator


【解决方案1】:

首先再次感谢 Leo 非常有帮助的评论。似乎每当您按下 UITextField viewWillLayoutSubviews 时都会被调用。

这是应用程序的代码:

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    self.view.superview.bounds = CGRectMake(0.0, 0.0, 616.0, 703.0);
}

似乎在 iOS 8 中您不能调用 self.view.superview.bounds,因为它会导致无限循环。详情见以下答案:

https://stackoverflow.com/a/25934574/2126233

【讨论】:

    【解决方案2】:

    就我而言,我重写了draw 方法并更改了layer。在UITextField 中发生了无限循环,当用户到达画布的末尾并想要输入更多内容时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多