I have simple code which is set DatePicker as input view of UIViewController
var datePicker = UIDatePicker()
override var inputView: UIView? {
return datePicker
}
override var canBecomeFirstResponder: Bool {
return true
}
I have to write self.resignFirstResponder on viewDidAppear to forcefully hide the keyboard (date picker ), Why UIViewController becomes first responder automatically ?

IMHO, when you override var canBecomeFirstResponder to true, the containing viewController should be the first responder in responders chain immediately after the completion of its initiation. You may print isFirstResponder in viewDidLoad to verify my above assertion.
I would move inputView assignment to textField: didBeginEdit to avoid such issue.
Hope it helps.