Как получить inputAccessoryView с inputTextField и UICollectionView после клавиатуры в UIView - PullRequest
2 голосов
/ 13 апреля 2019

Мне нужно использовать UIView по многим причинам.Главной причиной является странный и раздражающий сбой, который на самом деле имел смысл.См. Мой пост: Проблемы с интерактивной клавиатурой, всегда подпрыгивающей - она ​​также отражает фон коллекции.

Вот видео моей проблемы: https://www.youtube.com/watch?v=VcxEJGqf7BE&feature=youtu.be

Итак, то, что у меня сейчас есть, в моем viewDidLoad ():

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    layout.itemSize = CGSize(width: view.frame.width, height: 700)

    collectionview = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    collectionview.dataSource = self
    collectionview.delegate = self
    collectionview.backgroundColor = .clear

    collectionview.register(ChatroomMessageCell.self, forCellWithReuseIdentifier: cellId)
    collectionview.register(UICollectionViewCell.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: headerId)
    collectionview.bounces = true
    collectionview.alwaysBounceVertical = true //Scrolling
    collectionview.keyboardDismissMode = UIScrollView.KeyboardDismissMode.interactive //Keyboard drop when scroll

    collectionview.contentInset = UIEdgeInsets(top:0, left: 0, bottom: 8, right: 0)


}

И это для того, что у меня есть в 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 и inputtext действительно легко следуют за клавиатурой, когда нажимаете на клавиатуре вверх, но в ALL нет интерактивности :( Когда я пытаюсь прокрутить вниз и получить интерактивную клавиатуру, она просто идет вниз и даже не анимируется вообщеКто-нибудь может помочь, пожалуйста? Мне нужно, чтобы это тоже было в UIViewController. Если вы не сможете помочь мне с моим первым постом, тогда я буду обходить это таким образом. Я застрял на этом уже несколько дней.

Честно говоря, я даже не знаю, что я делаю или является ли это жизнеспособным, но мне просто нужно иметь UIView с полем ввода текста после клавиатуры, а также UICollectionView после этого поля ввода текста. Мне также нужна интерактивность клавиатурыЭто то, что я имею до сих пор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...