Нажмите и удерживайте экран iPhone

Поэтому я работаю над приложением для iPhone, и мне нужно определить, удерживает ли плеер экран, и мне нужно узнать местоположение, где они нажимают.

Первоначально я использовал функцию touchesBegin, но она вызывается только при новом прикосновении к экрану. Есть ли способ, которым я могу изменить это, чтобы вызываться чаще, как каждый раз, когда вызывается функция обновления?

Еще одна вещь, которую я изучал, была UILongGesture, но я не мог найти место, где она была нажата.

Любая помощь / совет, чтобы выяснить это будет принята с благодарностью.

3 ответа

Вы были на правильном пути - вы используете мультитач?

Если нет, все, что вам нужно сделать, это установить переменную, когда пользователь касается экрана, а затем очистить эту переменную в функции завершения касаний. Использование функции обновления будет работать, но это супер неэффективный способ сделать это

Я предполагаю, что вы хотите, чтобы что-то произошло, когда они держат палец на экране. Вы можете запланировать событие, скажем, за 2 секунды, когда они коснутся экрана, а затем, если они отпустят экран до этого, вы просто отмените событие.

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        let location = touch.locationInView(yourScrollView)
    }
}


@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
    let translation = recognizer.translationInView(self.view)
    var currentLocation : CGPoint = CGPointMake(location.x+translation.x, location.y+translation.y)
    recognizer.setTranslation(CGPointZero, inView: self.view)
}

Этот код находит начальное местоположение касания, а затем новое местоположение при каждом перемещении касания. Однако никакой код не будет вызываться без использования метода touchesEnded. Я не могу дать вам больше, не зная, как вы собираетесь использовать прикосновение.

Я конкретен здесь на ваш вопрос о том, как получить местоположение, где пользователь нажимает,

- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
    CGPoint touchPoint = [tapRecognizer locationInView: _tileMap]   //locationInView is the method you need to try
}

Во-вторых, UIGestureRecognizer также дает вам состояние, которое может быть полезным в вашем случае

UIGestureRecognizerStateBegan UIGestureRecognizerStateChanged UIGestureRecognizerStateEnded

и так далее.

Надеюсь это поможет

Другие вопросы по тегам