当前位置: 首页 > 面试题库 >

@IBDesignable错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool崩溃

龙成仁
2023-03-14
问题内容

我有一个非常简单的UITextView子类,它添加了“占位符”功能,您可以在“文本字段”对象中找到该功能。这是我的子类代码:

import UIKit
import Foundation

@IBDesignable class PlaceholderTextView: UITextView, UITextViewDelegate
{
    @IBInspectable var placeholder: String = "" {
        didSet {
            setPlaceholderText()
        }
    }
    private let placeholderColor: UIColor = UIColor.lightGrayColor()        
    private var textColorCache: UIColor!

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.delegate = self
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.delegate = self
    }

    func textViewDidBeginEditing(textView: UITextView) {
        if textView.text == placeholder {
            textView.text = ""
            textView.textColor = textColorCache
        }
    }

    func textViewDidEndEditing(textView: UITextView) {
        if textView.text == "" && placeholder != "" {
            setPlaceholderText()
        }
    }

    func setPlaceholderText() {
        if placeholder != "" {
            if textColorCache == nil { textColorCache = self.textColor }
            self.textColor = placeholderColor
            self.text = placeholder
        }
    }
}

UITextView将Identity
Inspector中的对象的类更改为后PlaceholderTextView,可以Placeholder在Attribute
Inspector中将属性设置得很好。该代码在运行应用程序时效果很好,但在界面构建器中不显示占位符文本。我还会收到以下非阻塞错误(我想这就是为什么它在设计时未呈现的原因):

错误:IB设计对象:无法更新自动版式状态:Interface Builder可可触摸工具崩溃

错误:IB设计变量:无法渲染PlaceholderTextView的实例:渲染视图花费的时间超过200毫秒。您的绘图代码可能会降低性能。

我无法弄清楚是什么原因导致了这些错误。第二个错误没有任何意义,因为我什至没有覆盖drawRect()。有任何想法吗?


问题答案:

当Interface Builder Cocoa Touch
Tool崩溃时,会生成崩溃报告。这些论文位于~/Library/Logs/DiagnosticReports并命名为IBDesignablesAgentCocoaTouch_*.crash。就我而言,它们包含一个有用的堆栈跟踪,该跟踪在我的代码中标识了问题。



 类似资料:
  • 我最近升级到了Xcode 8,我在故事板上遇到了问题。 如果我打开项目而没有打开故事板,它将编译并运行得很好。一旦我打开情节提要,我会看到关于IB Designables的多个错误,如下所示。 这些视图是使用我使用Cocoapods导入的和中的自定义视图的唯一视图。

  • 问题内容: 抱歉,我真的很想念React中子组件内部的传递。 我已经实现了一个包含3个组件的待办事项列表。 有一个组成部分和一个组成部分。状态仅存储在组件中。 显示器起步不错,因此可以看到道具。但是在提交表单后,我收到了以下错误: TypeError:this.props.tasks.map不是函数 当我console.log时,我没有得到我的数组,而是数组的长度。 你知道为什么吗? 编辑 :谢谢

  • 我正在尝试使用注册功能组件中的useState更新组件的状态。当用户输入无效的电子邮件地址并单击“提交”按钮时,以下代码将返回错误消息 我想用这段代码将错误消息设置为formData。 如何将错误消息设置为formData? 这是我的密码:

  • 问题内容: 当我编写自己的扩展类并使其生成时,在Interface Builder中收到两个错误,即: Main.storyboard:错误:IB Designables:无法更新自动布局状态:代理由于FD关闭而崩溃 Main.storyboard:错误:IB Designables:无法呈现RandjeUIButton的实例:代理崩溃 这是我的代码: 我正在OS X 10.11 beta 2上的

  • 问题内容: 我正在尝试执行本ReactJS教程的第15步:对只了解足够的jQuery的人们的React.js简介 作者建议以下内容: 我尝试执行以下操作(对我来说似乎不错): 而且我在Chrome开发者工具的控制台中收到以下错误: 在现有状态转换期间(例如在内部或另一个组件的构造函数中)无法更新。渲染方法应该纯粹是道具和状态的函数;构造函数的副作用是反模式,但可以移至。 这是一个JSbin演示。为