         dismissButton.addTarget(self, action: #selector(ChainConfigurationViewController.dismissButtonClicked), for: UIControlEvents.touchUpInside)
         containerView.addSubview(dismissButton)
         
+        let tap = UITapGestureRecognizer(target: self, action: #selector(ChainConfigurationViewController.dismissKeyboard))
+        tap.cancelsTouchesInView = false
+        view.addGestureRecognizer(tap)
+        
         self.refresh()
     }
 
+    func dismissKeyboard() {
+        view.endEditing(true)
+    }
+    
+    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
+        dismissKeyboard()
+        return true
+    }
+    
     // delegate callback from the color picker
     func HSBColorColorPickerTouched(sender:HSBColorPicker, color:UIColor, point:CGPoint, state:UIGestureRecognizerState) {
         if isValidColor(color: color) {

import UIKit
import Neon

class ChainConfigurationViewController: UIViewController, HSBColorPickerDelegate {
    
    // view model
    var chainConfigurationViewModel: ChainConfigurationViewModel?

        nameTextField.font = UIFont.systemFont(ofSize: 18)
        nameTextField.autocorrectionType = .no
        nameTextField.addTarget(self, action: #selector(ChainConfigurationViewController.nameTextFieldValueChanged), for: UIControlEvents.editingChanged)
        nameTextField.delegate = self
        nameContainer.addSubview(nameTextField)

        // chain start date label
