Ios 如何使inputAccessoryView在UIView中的键盘之后同时具有InputExtField和UICollectionView

Ios 如何使inputAccessoryView在UIView中的键盘之后同时具有InputExtField和UICollectionView,ios,swift,swift4,Ios,Swift,Swift4,我需要使用UIView有很多原因。主要原因是一个奇怪而恼人的小故障,实际上是完全有道理的。见我的帖子: 以下是我的问题的视频: 我现在看到的是我的viewDidLoad(): 这就是我在UIView中看到的,键盘后面的 lazy var inputContainerView: UIView = { let containerView = UIView() containerView.frame = CGRect(x: 0, y: 0, width: view.frame.wi

我需要使用UIView有很多原因。主要原因是一个奇怪而恼人的小故障,实际上是完全有道理的。见我的帖子:

以下是我的问题的视频:

我现在看到的是我的viewDidLoad():

这就是我在UIView中看到的,键盘后面的

 lazy var inputContainerView: UIView = {

    let containerView = UIView()
    containerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 700)

    containerView.backgroundColor = .white

    let sendButton = UIButton(type: .system)
    sendButton.backgroundColor = UIColor.white
    sendButton.tintColor = .blue
    sendButton.setTitle("Send", for: .normal)
    sendButton.translatesAutoresizingMaskIntoConstraints = false
    sendButton.addTarget(self, action: #selector(handleSend), for: .touchUpInside)
    containerView.addSubview(sendButton)
    //Add constraints x,y,w,h
    sendButton.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
    sendButton.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    sendButton.widthAnchor.constraint(equalToConstant: 80).isActive = true
    sendButton.heightAnchor.constraint(equalToConstant: 50).isActive = true

    containerView.addSubview(self.inputTextField)
    //Add constraints x,y,w,h
    inputTextField.leftAnchor.constraint(equalTo: containerView.leftAnchor, constant: 8).isActive = true
    inputTextField.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    inputTextField.rightAnchor.constraint(equalTo: sendButton.leftAnchor).isActive = true
    inputTextField.heightAnchor.constraint(equalTo: sendButton.heightAnchor).isActive = true

    containerView.addSubview(collectionview)

    collectionview.translatesAutoresizingMaskIntoConstraints = false
    collectionview.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
    collectionview.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20).isActive = true
    collectionview.widthAnchor.constraint(equalTo: containerView.widthAnchor).isActive = true
    collectionview.bottomAnchor.constraint(equalTo: inputTextField.topAnchor).isActive = true

    return containerView
}()

override var inputAccessoryView: UIView? {
    get{
        return inputContainerView
    }
}
override var canBecomeFirstResponder: Bool {
    return true
}
不过,这很容易出错。单击键盘时,collectionview和InputExtField确实很容易跟随键盘,但根本没有交互作用:(当我尝试向下滚动并使用交互式键盘时,它会一直向下滚动,甚至根本没有动画。有人能帮我吗?我也需要在UIViewController中使用它。除非你能帮助我完成我的第一篇文章,否则我将以这种方式解决它。我已经在这方面坚持了好几天了

老实说,我甚至不知道我在做什么,也不知道它是否可行,但我只需要在键盘后面有一个带有InputExtField的UIView,在InputExtField后面还有一个UICollectionView。我也需要键盘的交互性。这就是我目前为止所拥有的

 lazy var inputContainerView: UIView = {

    let containerView = UIView()
    containerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 700)

    containerView.backgroundColor = .white

    let sendButton = UIButton(type: .system)
    sendButton.backgroundColor = UIColor.white
    sendButton.tintColor = .blue
    sendButton.setTitle("Send", for: .normal)
    sendButton.translatesAutoresizingMaskIntoConstraints = false
    sendButton.addTarget(self, action: #selector(handleSend), for: .touchUpInside)
    containerView.addSubview(sendButton)
    //Add constraints x,y,w,h
    sendButton.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
    sendButton.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    sendButton.widthAnchor.constraint(equalToConstant: 80).isActive = true
    sendButton.heightAnchor.constraint(equalToConstant: 50).isActive = true

    containerView.addSubview(self.inputTextField)
    //Add constraints x,y,w,h
    inputTextField.leftAnchor.constraint(equalTo: containerView.leftAnchor, constant: 8).isActive = true
    inputTextField.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    inputTextField.rightAnchor.constraint(equalTo: sendButton.leftAnchor).isActive = true
    inputTextField.heightAnchor.constraint(equalTo: sendButton.heightAnchor).isActive = true

    containerView.addSubview(collectionview)

    collectionview.translatesAutoresizingMaskIntoConstraints = false
    collectionview.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
    collectionview.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20).isActive = true
    collectionview.widthAnchor.constraint(equalTo: containerView.widthAnchor).isActive = true
    collectionview.bottomAnchor.constraint(equalTo: inputTextField.topAnchor).isActive = true

    return containerView
}()

override var inputAccessoryView: UIView? {
    get{
        return inputContainerView
    }
}
override var canBecomeFirstResponder: Bool {
    return true
}