【问题标题】:How can a UITextView listen on its own changes without delegateUITextView 如何在没有委托的情况下监听自己的更改
【发布时间】:2019-11-06 15:01:45
【问题描述】:

我正在制作一个自定义 UITextView 子类。目的是支持占位符,而不是原生支持 UITextView。文本视图需要侦听自己的更改才能显示/隐藏占位符标签。但我不能使用委托,因为用户类可能会将委托重置为自身。在没有任何委托方法的情况下如何实现这一点?

【问题讨论】:

标签: ios swift


【解决方案1】:

您不能使用delegate 似乎有点奇怪,并且可能值得检查一下没有更好的架构可以允许它,但如果它不可行,您可以使用通知来提醒您活动textView

TextViews 问题 textDidBeginEditingNotificationtextDidChangeNotificationtextDidEndEditingNotification

您可以订阅这些通知,将文本值与存储的版本进行比较,并做出相应的响应。

本页详情:Apple docs for textView notifications

【讨论】:

    【解决方案2】:

    您可以监听文本值的变化,并据此采取行动。 如果至少有一个字符,则隐藏占位符,如果有0个字符,则取消隐藏占位符。

    class CustomTextView: UITextView {
    
       override var text: String! {
            didSet (newValue) {
                let shouldHide = newValue.count > 0
                placeholder.isHidden = shouldHide
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多