You can set unique tags to each UITextFields and UITextViews to differentiate and store data accordingly for each UITextField or UITextView. Whenever someone interacts with an UITextField, the following delegate methods can be used
func textViewDidBeginEditing(textView: UITextView)
func textFieldDidBeginEditing(textView: UITextField)
The above two delegate functions are called whenever we start editing the UITextField or UITextView. These functions can be used to adjust your layout accordingly so that your UITextField or UITextView doesn't go behind the Keyboard. However, in case of multiple UITextFields and UITextViews in the view, it' better to use a third party library to do this task. I used this https://github.com/michaeltyson/TPKeyboardAvoiding in one of my projects
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
Using the above two functions, you can track the changes made to the text inside the UITextField and UITextView
func textViewDidEndEditing(textView: UITextView)
func textFieldDidEndEditing(textField: UITextField)
The above two functions are called whenever editing ends in a particular UITextView or an UITextField. This can be used for storing data from UITextField or UItextView according to tag.
func textFieldShouldReturn(textField: UITextField) -> Bool
This is called when return key is clicked. You can also use this to store the text typed in this textfield in an array according to tag etc.