for dismiss the keyboard is the subview of UIView, then use 
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view.endEditing(true)
}
for dismiss the keyboard is the subview of UIScrollview, then use in here  scroll view observes the userInteraction so "By setting userInteractionEnabled to NO for your scroll view".  
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.yourSCrollviewName.endEditing(true)
}
for resign the keyboard in various types, the some other type has already answered in SO
update
for hide the keyboard the create the TapGesture for your scrollview
    self.ScrollView.isUserInteractionEnabled = true
   // ScrollView.keyboardDismissMode = .onDrag
    let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
    tap.numberOfTapsRequired = 1
    self.ScrollView.addGestureRecognizer(tap)
and call the action as 
  func doubleTapped() {
    // do something cool here
     self.ScrollView.endEditing(true)
}