Изменение положения кнопки при нажатии - PullRequest
1 голос
/ 21 августа 2011

У меня есть кнопка, которая должна сдвинуться на 2 пикселя вниз при нажатии и вернуться к исходному положению после окончания печати. Я пробовал touchesBegan и touchesEnded, но они не работают с кнопкой. Я также попытался заменить кнопку IUView и вызвать метод кнопки в touchesEnded, но это дало кнопке странную задержку перед тем, как двигаться вниз. Есть идеи?

1 Ответ

1 голос
/ 21 августа 2011

Вы пробовали использовать события Touch Down и Touch Up?Попробуйте переместить расположение кнопки в Touch Down и восстановить ее первоначальное значение в Touch Up (внутри и снаружи).

РЕДАКТИРОВАТЬ: Вот пример кода:

- (IBAction)moveButtonDown:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    btn.frame = CGRectMake(btn.frame.origin.x, btn.frame.origin.y + 2, btn.frame.size.width, btn.frame.size.height);
}

- (IBAction)moveButtonUp:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    btn.frame = CGRectMake(btn.frame.origin.x, btn.frame.origin.y - 2, btn.frame.size.width, btn.frame.size.height);
}

Назначьте moveButtonDown:кнопки «Touch Down» и moveButtonUp: для обоих событий «Touch Up Inside» и «Touch Up Outside».Протестировано и работает, по крайней мере, здесь;)

РЕДАКТИРОВАТЬ: Спасибо, fichek, вот решение с CGRectOffset вместо CGRectMake:

- (IBAction)moveButtonDown:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    btn.frame = CGRectOffset(btn.frame, 0, 2);
}

- (IBAction)moveButtonUp:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    btn.frame = CGRectOffset(btn.frame, 0, -2);
}
...