Swift - 类似 WhatsApp 的键盘收起

3

我正在开发一款消息应用程序,但我希望在用手指按下键盘时将其关闭。

我知道可以通过以下方式实现:

keyboardDismissMode = .interactive

但我不知道如何在移动键盘时更改表视图(tableview)的约束,就像iOS上的WhatsApp应用程序一样。

有人能帮我吗?

编辑:

这是我已经拥有的:

我有一个简单的UITableView来显示我的消息

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
    return messages.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    var celda = UITableViewCell()
    
    let message = messages[indexPath.row]
    
    if message.owner == 0{
        
        celda =  tableView.dequeueReusableCell(withIdentifier: "messageOther")!
    }else{
        
        celda =  tableView.dequeueReusableCell(withIdentifier: "messageMine")!
    }
    
    let fondoView = celda.viewWithTag(1)
    fondoView?.layer.cornerRadius = 10
               
    let messageLabel = celda.viewWithTag(2) as! UILabel
    messageLabel.text = message.text
    
    let fecha = Date(timeIntervalSince1970: TimeInterval(message.date))
    let dateFormatter = DateFormatter()
    dateFormatter.timeStyle = .short
    dateFormatter.timeZone = .current
    
    let dateLabel = celda.viewWithTag(3) as! UILabel
    dateLabel.text = dateFormatter.string(from: fecha)
    
    return celda
}

我的viewDidLoad方法中:

override func viewDidLoad() {
    super.viewDidLoad()

    messagesTableView.keyboardDismissMode = .interactive
    
    getMessages()
}

键盘用手指推动就可以隐藏,这是我目前了解到的情况,但我不知道如何使我的UITextField像WhatsApp和iMessage一样跟随键盘移动,同时从UITextField开始推动而不是从键盘开始。

非常感谢您的帮助!


4
你尝试了什么?你能分享一下你所写的代码吗? - emrcftci
当然!我添加了更多信息。 - Jorge
@Jorge 我也遇到了同样的问题。你找到解决方法了吗?键盘会拉下来,但是在vstack中的文本输入不会随之移动。 - Timmerz
兄弟,你找到这个问题的解决方案了吗? - Bijender Singh Shekhawat
1个回答

1

您可以在ViewDidLoad中设置键盘Dismiss模式为onDrag,如下所示。

tableView.keyboardDismissMode = .onDrag

检查一下这是否是你想要的行为。


谢谢!我想要的是交互式的,而不是跟随手指的移动。 - Jorge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接