因此,我正在为iPhone开发一个应用程序,我需要检测玩家是否拿着屏幕,我需要获得他们按下的位置。
最初我使用的是touchesBegin函数,但只有在新的时间触摸屏幕时才会调用该函数。有没有办法修改它,使其更频繁地被调用,就像每次调用update函数一样?
我调查的另一件事是UILongGesture的东西,但我不能得到它被按下的位置。
对解决这个问题的任何帮助/建议都将不胜感激。
发布于 2014-08-18 02:59:47
我在这里具体回答你的问题,如何获得用户点击的位置,
- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint touchPoint = [tapRecognizer locationInView: _tileMap] //locationInView is the method you need to try
}其次,UIGestureRecognizer还为您提供了在您的情况下可能有用的状态
UIGestureRecognizerStateBegan UIGestureRecognizerStateChanged UIGestureRecognizerStateEnded
诸若此类。
希望这能有所帮助
发布于 2014-08-18 03:05:21
你在正确的轨道上--你在使用多点触控吗?
如果没有,你需要做的就是在用户触摸屏幕时设置一个变量,然后在touches ended函数上清除该变量。使用update函数是可行的,但这是一种非常低效的方式
我猜当他们把手指放在屏幕上的时候,你希望发生一些事情。当他们触摸屏幕时,你可以在比方说2秒内安排一个事件,然后如果他们在此之前释放屏幕,你就取消事件。
发布于 2014-08-18 09:48:07
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方法,则不会调用任何代码。在不知道你打算如何使用触摸的情况下,我不能给你更多。
https://stackoverflow.com/questions/25352470
复制相似问题