ios - 在 TextView 中关闭键盘

标签 ios swift uitextview

我只是想在 XCode 7.1.1 中使用以下函数将键盘隐藏在 TextView 中,但它不起作用。

我该如何解决这个问题?

class pictureViewController: UIViewController, UITextViewDelegate {

    @IBOutlet weak var dedicatoriaCentradaTextView: UITextView!

    override func viewDidLoad() {
        dedicatoriaCentradaTextView.delegate = self
    }

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {

        if(text == "\n") {
            dedicatoriaCentradaTextView.resignFirstResponder()
            return false
        }
        return true
    }
}

最佳答案

当重载 viewDidLoad() 方法来为您的 TextView 设置委托(delegate)时,您可能应该保留 super.viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()

    // Handle the user input in the text view through delegate callbacks
    dedicatoriaCentradaTextView.delegate = self
}

此后,由于您几乎已尝试正确,请使用 UITextViewDelegate 协议(protocol)中的 textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) 方法:

// UITextViewDelegate
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
        return false
    }
    else {
        return true
    }
}

但请注意,您在上面的方法中使用了本地 UITextView 实例(本地方法范围内)。


使用上面的建议,您的 pictureViewController 类应该看起来像

class pictureViewController: UIViewController, UITextViewDelegate {

    @IBOutlet weak var dedicatoriaCentradaTextView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Handle the user input in the text view through delegate callbacks
        dedicatoriaCentradaTextView.delegate = self
    }

    // UITextViewDelegate
    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
        if text == "\n" {
            textView.resignFirstResponder()
            return false
        }
        else {
            return true
        }
    }
}

最后请注意,根据 Swift 编码约定,您的类名应以大写字母开头。即,将您的类 pictureViewController 重命名为 PictureViewController

关于ios - 在 TextView 中关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292395/

相关文章:

ios - bundleIdentifier != nil 当通过 UNUserNotificationCenter.current().requestAuthorization 请求 iOS10 通知授权时

swift - 使用 Swift 将 CLLocationCoordinate2d 转换为街道地址

swift - 添加 Float 值时,表达式类型在没有更多上下文的情况下不明确

ios - TextView 在填充后在 iOS 中丢失样式

ios - 推特登录异常 flutter

html - 背景图像不显示在 ios 上

ios - UITextView/UITextField 的虚线/虚线边框

ios - iOS-UITextView成为FirstResponder

ios - 什么时候发布 AVCaptureDeviceSubjectAreaDidChangeNotification?

swift - 在 Struct 中使用 "let"- Swift