【问题标题】:Assertion failure in UITextView _firstBaselineOffsetFromTopUITextView _firstBaselineOffsetFromTop 中的断言失败
【发布时间】:2016-05-06 08:57:43
【问题描述】:

我正在学习 Xcode 中的 view debugger 并使用 Debug > View Debugging > Capture View Hierarchy 捕获视图层次结构。但是,当我在我的应用程序中尝试它时,出现以下错误:

-[UITextView _firstBaselineOffsetFromTop]、/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UITextView.m:1683 中的断言失败

我可以在以下简单项目中重现这一点:

import UIKit
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let myTextView = UITextView()
        myTextView.frame = CGRect(x: 50, y: 50, width: 200, height: 100)
        myTextView.text = "This is a test."
        view.addSubview(myTextView)

    }
}

我看到here 可能是由于未使用自动布局造成的。这真的是一个我们必须等待修复的错误吗?有 Swift 解决方法吗?

更新

建议的重复项看起来与我遇到的问题相同。然而,与那个问题不同,我要求一个 Swift 解决方法。该问题的“答案”只是一个链接(与我上面已有的相同链接)。我正在投票以另一种方式结束。

【问题讨论】:

标签: ios xcode swift view-debugging


【解决方案1】:

注意仅在 DEBUG 构建中执行此操作

解决此问题的解决方法。在您的项目中保持以下类别。它对我有用。

@interface UITextView(MYTextView)

@end

@implementation UITextView (MYTextView)
- (void)_firstBaselineOffsetFromTop {

}

- (void)_baselineOffsetFromBottom {

}

@end

快速

extension UITextView {
    func _firstBaselineOffsetFromTop() {
    }
    func _baselineOffsetFromBottom() {
    }
}

【讨论】:

  • 啊,我明白了。所以这是覆盖导致断言失败的方法。我想如果这些方法正在做其他重要的事情,那么您将失去该功能,但是当需要捕获视图层次结构时,这是一个非常有用的解决方法。然后可以稍后将扩展名(或类别)注释掉。 (我用我的问题中的示例项目测试了 Swift 代码,我可以确认它确实有效。)
  • 仅通过将其添加到您的 .pch 文件#ifdef DEBUG #import "UITextView+MYTextView.h" #endif 来启用调试模式
  • 感谢您的巧妙解决方法 && 苹果干得好>=:
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 2017-08-07
  • 2012-08-01
  • 2015-09-01
  • 2012-09-26
相关资源
最近更新 更多