Кнопка iphone, нажатая в течение 3 секунд, переходит к другому виду - PullRequest
0 голосов
/ 08 декабря 2010

У меня в приложении есть кнопка, которая при нажатии переходит в вид но мне нужно, чтобы при нажатии на 3 секунды он перешел бы в другое представление,

например, когда вы находитесь на ipad в Safari и продолжаете нажимать URL-адрес, и он показывает всплывающее окно с копией и т. Д.,

но мне нужно, чтобы при нажатии на 3 секунды он переходил в другой вид ...

надеюсь, что это имеет смысл, я объясню лучше, если не понял,

Большое спасибо! pd, также, как заставить это показать всплывающее окно стиля? ура!

Ответы [ 3 ]

4 голосов
/ 08 декабря 2010

Попробуйте установить свойство NSTimer в вашем контроллере представления. Когда кнопка нажата, создайте таймер и назначьте его на свое имущество. Вы можете обнаружить этот момент с помощью этого:

[button addTarget:self action:@selector(startHoldTimer) forControlEvents:UIControlEventTouchDown];

и назначьте с этим:

-(void) startHoldTimer {
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(goToNewView:) userInfo:nil repeats:NO];
}

Затем задайте действие для запуска при отмененном касании или касании внутри:

[button addTarget:self action:@selector(touchUp) forControlEvents:UIControlEventTouchUpInside];
[button addTarget:self action:@selector(cancelTimer) forControlEvents:UIControlEventTouchCancel];

и

//if timer fires, this method gets called
-(void) goToNewView {
    [self cancelTimer];
    [self loadSecondView];
}

// normal button press invalidates the timer, and loads the first view
-(void) touchUp {
    [self cancelTimer];
    [self loadFirstView];
}

//protected, just in case self.myTimer wasn't assigned
-(void) cancelTimer {
    if (self.myTimer != nil)
        if ([self.myTimer isValid]) {
            [self.myTimer invalidate];
    }
}

Это должно позаботиться об этом!

1 голос
/ 08 декабря 2010

Используйте UILongPressGestureRecognizer, добавленное к кнопке с помощью -addGestureRecognizer: - оно будет обрабатывать синхронизацию касания и запускать событие, когда распознает, что кнопка была нажата некоторое время.Возможно, вы захотите пересмотреть свой шаблон взаимодействия, хотя обычно вещи, которые можно долго нажимать, - это не кнопки, а фактические фрагменты данных в представлении, например изображение или ссылка в Safari.

0 голосов
/ 08 декабря 2010

Один из возможных подходов - реализовать одно из событий касания (я не помню названия, но метод, который срабатывает, когда вы нажимаете на кнопку), и запланировать срабатывание таймера через три секунды. Если пользователь поднимает палец до этого времени, отмените таймер и выполните обычное нажатие кнопки. Если время действительно истекло (то есть прошло 3 секунды), проигнорируйте событие обновления и загрузите ваш новый вид.

...