当用户在 Swift 中点击 UITextView 时,如何运行一段代码?

Posted

技术标签:

【中文标题】当用户在 Swift 中点击 UITextView 时,如何运行一段代码?【英文标题】:How do you run a section of code when the user taps the UITextView in Swift? 【发布时间】:2015-04-06 03:42:10 【问题描述】:

所以我有一个UITextView 和一些占位符文本。当用户在视图内部点击时,我想执行一些代码,即清除占位符文本。我试图创建一个IBAction,但它不会让我这样做。我在网上查了一下,找到了this UITextViewDelegate Protocol Reference,但我不知道怎么用。我发现很多使用委托的示例都是 Objective-C 并且我正在使用 Swift。

对于这个简单的问题,我很抱歉。

谢谢!

【问题讨论】:

【参考方案1】:

给定一个文本视图someTextView 的IBOutlet,您需要做的就是使您的类符合UITextViewDelegate,将该文本视图的委托设置为self,并实现textViewDidBeginEditing 方法:

class ViewController: UIViewController, UITextViewDelegate 

    @IBOutlet weak var someTextView: UITextView!

    override func viewDidLoad() 
        super.viewDidLoad()

        someTextView.delegate = self
    

    func textViewDidBeginEditing(textView: UITextView) 
        println("Some code")
    

【讨论】:

【参考方案2】:

视图控制器应该遵守 UITextViewDelegate。然后确保实现 textViewDidBeginEditing 委托方法。当用户开始编辑文本视图时,以下代码应清除默认占位符文本。

import UIKit

class ViewController: UIViewController, UITextViewDelegate 

    @IBOutlet weak var textView: UITextView!


    override func viewDidLoad() 
        super.viewDidLoad()
        self.textView.delegate = self
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    func textViewDidBeginEditing(textView: UITextView) 
        self.textView.text = ""
    


【讨论】:

以上是关于当用户在 Swift 中点击 UITextView 时,如何运行一段代码?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:检测用户编辑的热点已在 UITextView 中停止

当键盘出现在swift中时滚动UITextView

如何防止用户在 Swift 5 的 UITextView 中添加太多换行符?

将文本从 UITextView 保存到领域(Swift 5)时出现问题

Swift 3:UITextView - 动态高度 - 以编程方式

是否有机会确定是否在 UITextView 中点击了空白空间?