Как я могу реализовать inputAccessoryView так же, как в приложении iMessage? - PullRequest
0 голосов
/ 16 марта 2019

Я хочу реализовать интерфейс, который очень похож на приложение imessage.Я прочитал много тем, посмотрел много видео и до сих пор не понимаю, как это работает точно, похоже, что люди делают вещи случайно.

Вот вопрос: я хочу поместить UITextView поверхклавиатура, как inputAccessoryView, чтобы разрешить ".интерактивное" отклонение клавиатуры (и иметь панель с UITextView в ней, перемещаясь с клавиатурой при отклонении или показывая жест).Я просто хочу что-то в точности как в приложении iMessage или Facebook Messenger.

Итак, я увидел, что мне нужно поместить это в colletionViewController, где у меня есть исторические сообщения (я до сих пор не понимаю, почему я долженпоместите его в UICollectionView):

override var inputAccessoryView: UIView? {
    get
    {
        let v = UIView(frame : CGRect(x:0,y:0,width:100,height:50))
        v.backgroundColor = .red

        return v
    }
}

override var canBecomeFirstResponder: Bool {
    get { return true }
}

Когда я это делаю, красная полоса не отображается, когда я запускаю приложение.Я перепробовал много вещей.Я пытался стать FirstResponder () в коллекции viewDidLoad, но безрезультатно.Я попытался reloadInputView (), тоже безрезультатно.Я также попытался myinstanceTextView.becomeFirstResponder () в collectionView.viewDidLoad (), ничего.Я хочу в основном функцию для управления клавиатурой, как это:

self.showKeyboardAndItsAccessoiryView() // when the user types something
self.showOnlyAccessoiryView() // when the user do other things in the historic 
self.showNothing() // hide keyboard and its accessoryview, when the user go to another page, we don't want the bottom bar any more.
...