Прочтите это Руководство по программированию , которое объясняет все это.
В частности, в части «Перемещение содержимого, расположенного под клавиатурой», подробно объясняется техника.
ТамЭто даже фрагменты кода для правильной реализации (с помощью уведомлений клавиатуры).
Обратите внимание, что, как указано в той же документации, если вы используете UITableViewController, это автоматически перемещает его содержимое.