Действие Триггер, когда я держу UIButton в течение 2 секунд в iPhone

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

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

Любые идеи?

Ответы

Ответ 1

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

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

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

Удачи!