所以我正在开发一款适用于iPhone的应用程序,我需要检测播放器是否正在按住屏幕,我需要知道他们按下的位置。
最初我使用的是touchesBegin函数,但只有在新时间触摸屏幕时才会调用它。有没有一种方法可以修改它以便更频繁地调用,就像每次调用更新函数一样?
我调查的另一件事是UILongGesture的东西,但是我无法获得按下它的位置。
任何有关解决此问题的帮助/建议都将不胜感激。
答案 0 :(得分:0)
关于如何获取用户点击位置的问题,我在此具体说明,
- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint touchPoint = [tapRecognizer locationInView: _tileMap] //locationInView is the method you need to try
}
其次,UIGestureRecognizer还为您提供了在您的情况下可能有用的状态
UIGestureRecognizerStateBegan UIGestureRecognizerStateChanged UIGestureRecognizerStateEnded
等等。
希望这有帮助
答案 1 :(得分:0)
你走在正确的轨道上 - 你使用多点触控吗?
如果没有,您需要做的就是在用户触摸屏幕时设置变量,然后在触摸结束功能上清除该变量。使用更新功能会起作用,但这是一种超低效的方式
我假设你想要把手指放在屏幕上时会发生什么事。您可以在触摸屏幕时计划2秒内的活动,然后如果他们在此之前释放屏幕,您只需取消活动。
答案 2 :(得分:0)
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方法,则不会调用任何代码。在不知道你打算如何使用触摸的情况下,我无法给你更多。