Если разбить, эта проблема не так уж и плоха.
Создайте новый подкласс UIViewController для управления большим блоком кнопок в вашем примере, скажем, ButtonPadViewController .
Затем создайте еще один новый подкласс UIViewController, который будет обрабатывать одну кнопку, скажем ButtonViewController . Каждый ButtonViewController будет иметь UIImageView. Вы можете иметь этот вид загрузить изображение для кнопки. Поскольку каждый вид представляет собой отдельную кнопку, вы также можете легко обнаружить любые штрихи в этом представлении. Вы можете сказать, что если вы получили вызов touchesEnded, пользователь нажал эту кнопку.
Теперь вернитесь к своему ButtonPadViewController, вы можете создать шесть экземпляров ButtonViewController и добавить их представления в качестве подпредставлений для просмотра, управляемого ButtonPadView.
Для последних штрихов вид вашего ButtonPadViewController должен быть частично прозрачным и иметь закругленные углы. Самим кнопкам нужно только нарисовать текст и значок кнопки.