繁体   English   中英

Swift-在键盘打开的情况下加载联系人页面

[英]Swift - Load Contact Page with Keyboard Open

我正在做一个简单的与我们联系的表单,其中包含姓名,电子邮件地址和消息。 我的viewDidLoad中的以下代码是“名称”文本字段的代码段。 我希望在打开联系表时在此字段上打开键盘。

override func viewDidLoad() {
    view.backgroundColor = UIColor.darkGray
    let fullNameInput = UITextField()
    fullNameInput.frame = CGRect(x: 15, y: 15, width: self.view.frame.width - 2 * margin, height: 50)
    fullNameInput.placeholder = "Your Name"
    let fullNameString = "Your Name"
    let fullNamePlaceholder = NSMutableAttributedString(string: fullNameString)
    let fullNameRange = (fullNameString as NSString).range(of: fullNameString)
    fullNamePlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: fullNameRange)
    fullNameInput.attributedPlaceholder = fullNamePlaceholder
    fullNameInput.backgroundColor = .black
    fullNameInput.delegate = self
    fullNameInput.layer.cornerRadius = 5.0
    fullNameInput.layer.borderWidth = 2.0
    fullNameInput.layer.borderColor = UIColor.black.cgColor

    fullNameInput.becomeFirstResponder()
    self.view.addSubview(fullNameInput)
}

在浏览解决方案时,我相信

fullNameInput.becomeFirstResponder()

成为我希望实现的代码行。 但是,它没有这样做。 我在这里想念什么吗?

附加问题

接下来,我还将在打开的键盘上方对该区域进行滚动查看。

我还如何获得键盘框架?

我正在使用Swift 3.0和iOS 9.2

becomeFirstResponder() 文档中

切勿在不属于活动视图层次结构的视图上调用此方法。

因此,从viewDidLoad调用它绝对不是一个好主意。 viewDidAppear尝试

您必须从viewDidAppear调用它

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    fullNameInput.becomeFirstResponder()
}

您要使fullNameInput成为视图中的第一响应者。

只需先将其添加为子视图,然后将其称为第一响应者即可使用。

我会按照mag_zbc所说的去做。 ViewDidAppear上使用成为第一响应者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM