我有一个非常简单的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
        }
    }
}

在Identity Inspector中将UITextView对象的类更改为PlaceholderTextView之后,我可以在Attribute Inspector中将Placeholder属性设置得很好.该代码在运行应用程序时非常有效,但不会在界面生成器中显示占位符文本.我还得到了以下非阻塞错误(我假设这就是为什么它在设计时没有渲染):

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

错误:IB Designables:无法呈现PlaceholderTextView的实例:呈现视图的时间超过200毫秒.您的绘图代码可能会受到性能降低的影响.

我找不出是什么导致了这些错误.第二个错误没有任何意义,因为我甚至没有覆盖drawRect().有什么主意吗?

推荐答案

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

Ios相关问答推荐

如何调整包含extView的UICollectionViewListCell的大小?

iOS中的分段拾取器—手柄点击已 Select 的项目

带有动画层的UIView表示不会在工作表中设置动画

Xcode版本15.2上未显示iOS 16.4的模拟器

SwiftData共享扩展阻止应用程序打开SQLite文件

在 React Native iOS 中加载多个 JS 包

如果使用 .onAppear 设置,为什么 SwiftUI Picker 不显示正确的选定值

具有一个参数/参数的泛型类的泛型类

叠加视图不在堆栈中维护自身 - SwiftUI

在 Swift 中映射 MySQL 数据

如何以编程方式调用视图控制器?

在 UITextView 中垂直居中文本

有没有办法在 xib 文件中的视图和顶部布局指南之间添加约束?

水平滚动 UICollectionView 时对齐单元格的中心

在 iOS 上存储身份验证令牌 - NSUserDefaults 与 keys 串?

使用 Chrome DevTools 调试 iOS 6+7 Mobile Safari

如何在ios中生成UUID

NSURL 到带有 XCTest 的测试包中的文件路径

找不到开发者磁盘映像

如何在 Swift 中更改按钮标题对齐方式?