创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?

Posted

技术标签:

【中文标题】创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?【英文标题】:How can I hide the keyboard in the UI in Swift Playgrounds (on Xcode) that appears in the Live View when I create a UITextView? 【发布时间】:2018-03-29 13:17:06 【问题描述】:

我创建了一个UITextView 对象,当我在Live View 中与它交互时,键盘出现在UI 中,输入文本的唯一方法似乎是从那个键盘。这是 Swift Playgrounds 的最新变化吗?用户可以通过物理键盘输入文本吗?

代码:

let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 1024, height: 768))
textView.textColor = .green
textView.font = UIFont(name: "Courier", size: 22)
textView.backgroundColor = .black
mainView.addSubview(textView)

【问题讨论】:

添加您的代码工作以正确地为您提供帮助。 【参考方案1】:

您可以将手势识别器添加到超级视图,使用自定义关闭键盘方法分配操作并在其中调用textField.resignFirstResponder()

这是一个简单的例子:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController 

    private var textView: UITextView?

    override func loadView() 
        let view = UIView()
        view.backgroundColor = .white

        textView = UITextView()

        if let textView = textView 
            textView.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
            textView.text = "Hello World!"
            textView.textColor = .black

            view.addSubview(textView)
        
        self.view = view
    

    override func viewDidLoad() 
        super.viewDidLoad()

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
        self.view.addGestureRecognizer(tapGesture)
    

    @objc func hideKeyboard() 
        textView?.resignFirstResponder()
    

// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

【讨论】:

嗨!感谢您的回答...我刚刚尝试过它,键盘仍然出现在 UI 中,并且 textView 不接受物理键盘的输入:/ 不幸的是,从 Xcode 9 开始,游乐场模拟器不再接受来自物理键盘的输入。如果你只是想隐藏键盘,你可以将 UITextView 的 inputView 设置为 UIView 并带有一个空框架。 好的,刚刚测试过。将 inputView 设置为带有空框的 UiView 会完全隐藏 UI 中的键盘....但 UITextView 仍然不接受输入形式的物理键盘(如您所述)。

以上是关于创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?的主要内容,如果未能解决你的问题,请参考以下文章

如何在输入/编辑时使 UITextView 滚动

如何在 iPhone 中动态更改 UITextView 中文本的字体大小

当新行添加到 UITextView 实例中时,如何向上滚动视图?

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

将图像添加到 UITextView

如何在滚动视图中使 UIImage 低于 UILabel 或 UITextView