Ios 如何使inputAccessoryView在UIView中的键盘之后同时具有InputExtField和UICollectionView
我需要使用UIView有很多原因。主要原因是一个奇怪而恼人的小故障,实际上是完全有道理的。见我的帖子: 以下是我的问题的视频: 我现在看到的是我的viewDidLoad(): 这就是我在UIView中看到的,键盘后面的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
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
}