iosswifttableviewinputaccessoryview

InputAccessoryView with custom view created in IB


I've read a lot of material on this topic but most of them create custom view programatically.

Is it possible to use InputAccessoryView with a custom view created in IB? In storyboard I've added textInputView, inside which I've added text view and send button etc as seen in the screenshot below.

I've following code so which removes Table View for some reason so I can't get it working. I've added tableview in the storyboard.

I've shown here only InputAccessoryView related code.

class InputAccViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var textView: UITextView!
    @IBOutlet weak var textInputView: UIView!
    // other code

    override var canBecomeFirstResponder: Bool { return true }

    override var inputAccessoryView:UIView {
       get{
           return self.textInputView
       }
   }

    override func viewDidLoad() {
        super.viewDidLoad()

        textInputView.removeFromSuperview()
        // other code
    }
     // other code tableview delegates etc...
}

Left screenshot is with the accessory view code which doesn't show table view. If I comment out accessory view related code it does show table view as in the right screenshot.

enter image description here


Solution

  • Seems you might be constraining the UITableView's bottom to the textInputView's top. When you are setting the textInputView as the inputAccessoryView of the UIViewController this no longer works as expected. When setting the textInputView as the inputAccessoryView make sure you constraint the bottom of UITableView to the bottom of UIViewController's view.