Триггер действия, когда я удерживаю UIButton в течение 2 секунд в iPhone - PullRequest
14 голосов
/ 27 января 2011

У меня есть UIButton в моем приложении и действие, которое запускается, когда я TouchDown UIButton.

Можно ли обнаружить касание и удержание на UIButton на iPhone? Я хочу, чтобы мое действие срабатывало, когда пользователь удерживает кнопку в течение 2 секунд или более.

Есть идеи?

Ответы [ 2 ]

27 голосов
/ 27 января 2011

UILongPressGestureRecognizer - это то, что вам нужно.Например,

UILongPressGestureRecognizer *longPress_gr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(doAction:)];
[longPress_gr setMinimumPressDuration:2]; // triggers the action after 2 seconds of press
[yourButton addGestureRecognizer:longPress_gr];

Чтобы позволить вашему действию срабатывать только один раз (т. Е. По истечении 2 секунд), убедитесь, что ваш метод doAction: выглядит примерно так:

- (void)doAction:(UILongPressGestureRecognizer *)recognizer {

    if (recognizer.state == UIGestureRecognizerStateBegan) {

        // Your code here
    }
}
2 голосов
/ 13 сентября 2012

С другой стороны, вы можете использовать this NBTouchAndHoldButton .Это именно то, что вы хотите, и это очень легко реализовать:

TouchAndHoldButton * pageDownButton = [TouchAndHoldButton buttonWithType:UIButtonTypeCustom];
[pageDownButton addTarget:self action:@selector(pageDownAction:) forTouchAndHoldControlEventWithTimeInterval:0.2];

Удачи!

...