Use delegates to get which control is currently focused.UITextViewDelgate method textViewDidBeginEditing: gets called when text view starts editing/focused or become first responder. Similarly UITextFieldDelegate method textFieldDidBeginEditing: can be used for this purpose.
Keyboard size:
See 'rich' answer