Вы можете добавить пары «цель / действие» к кнопке для различных управляющих событий: чтобы что-то сразу началось после вашего пальца, вам, вероятно, понадобится UIControlEventTouchDown
.
Подключите вашу первую кнопку, чтобы вызвать метод на вашем контроллере представления для этого состояния управления. В этом методе действия создайте свою новую кнопку и поместите ее в свойство на вашем контроллере представления, чтобы вы могли обратиться к ней позже. Также установите свойство BOOL на вашем контроллере представления, которое называется что-то вроде shouldTrackButton
.
Чтобы заставить новую кнопку следовать за вашим пальцем, я думаю, что самый простой способ - это распознавание панорамирования в суперпредставлении. Установите это, чтобы вызвать метод на вашем контроллере представления. В этом методе, если состояние распознавателя жестов равно UIGestureRecognizerStateChanged
, вызовите translationInView:
в распознавателе жестов, передавая представление контроллера представления (то есть суперпредставление кнопок). Теперь, если и только если shouldTrackButton
равно YES
, возьмите кадр исходной кнопки, переведите ее на эту величину (используя CGRectApplyAffineTransform
и CGAffineTransformMakeTranslation
) и установите для кадра новой кнопки результат.
Наконец, в том же методе, если состояние распознавателя жестов равно UIGestureRecognizerStateEnded
, установите shouldTrackButton
в NO
.