Нажмите и удерживайте экран 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
и так далее.
Надеюсь это поможет