微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何删除inputAccessoryView并将其替换为另一个视图? 步骤1:步骤2:

如何解决如何删除inputAccessoryView并将其替换为另一个视图? 步骤1:步骤2:

这是要求

  • UICollectionViewController键盘顶部具有输入附件视图的基本聊天应用程序
  • 我使用override var inputAccessoryView添加自定义输入附件视图,并在此函数中返回该自定义视图
  • 我有一个需求,我需要在某个地方用另一个自定义输入附件视图替换inputAccessoryView,以实现特定功能

我尝试过的事情

这是我添加一个输入附件视图的方式

lazy var customInputAccessoryViewNumberOne: KeyboardView = {
        let civ = KeyboardView(frame: .init(x: 0,y: 0,width: view.frame.width,height: 50))
        civ.sendButton.addTarget(self,action: #selector(handleSend),for: .touchUpInside)
        return civ
    }()

override var inputAccessoryView: UIView? {
        get {
             return customInputAccessoryViewNumberOne
        }
    }

现在,当用户点击按钮时,我需要将{strong> customInputAccessoryViewNumberOne完全替换为customInputAccessoryViewNumberTwo

@objc func handleNewInputAccessoryViewpressed() {
  //how to remove customInputAccessoryViewNumberOne?
  //how to add customInputAccessoryViewNumberTwo?
}

解决方法

只需两个步骤即可完成

步骤1:

在条件满足时设置输入的附件视图

步骤2:

在您的reloadInputViews()UITextField实例上调用UITextView

以下代码段对此进行了解释。

func textField(_ textField: UITextField,shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool {
    let finalText = (textField.text as NSString?)?.replacingCharacters(in: range,with: string)
    
    guard let txt = finalText else { return true }
    if txt.count > 5 {
        let greenView = UIView(frame: CGRect(x: 0,y: 0,width: UIScreen.main.bounds.width,height: 40))
        greenView.backgroundColor = .green
        textField.inputAccessoryView = greenView
    } else {
        let redView = UIView(frame: CGRect(x: 0,height: 40))
        redView.backgroundColor = .red
        textField.inputAccessoryView = redView
    }
    textField.reloadInputViews()
    return true
}

enter image description here

,

因此,显然,每次显示或关闭键盘时,都会调用override方法(并且在显示或关闭键盘时会多次调用该方法,以便基于键盘的当前位置呈现视图。) 我们可以通过返回相应的UIView()在override var inputAccessoryView方法中使用简单的标志和if语句替换输入附件。

-放弃或显示键盘,以便可以使用 willBecomeFirstResponder resignFirstResponder

更改视图

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。