首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按住iPhone Screen

按住iPhone Screen
EN

Stack Overflow用户
提问于 2014-08-18 02:44:02
回答 3查看 91关注 0票数 0

因此,我正在为iPhone开发一个应用程序,我需要检测玩家是否拿着屏幕,我需要获得他们按下的位置。

最初我使用的是touchesBegin函数,但只有在新的时间触摸屏幕时才会调用该函数。有没有办法修改它,使其更频繁地被调用,就像每次调用update函数一样?

我调查的另一件事是UILongGesture的东西,但我不能得到它被按下的位置。

对解决这个问题的任何帮助/建议都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2014-08-18 02:59:47

我在这里具体回答你的问题,如何获得用户点击的位置,

代码语言:javascript
运行
复制
- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
    CGPoint touchPoint = [tapRecognizer locationInView: _tileMap]   //locationInView is the method you need to try
}

其次,UIGestureRecognizer还为您提供了在您的情况下可能有用的状态

UIGestureRecognizerStateBegan UIGestureRecognizerStateChanged UIGestureRecognizerStateEnded

诸若此类。

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2014-08-18 03:05:21

你在正确的轨道上--你在使用多点触控吗?

如果没有,你需要做的就是在用户触摸屏幕时设置一个变量,然后在touches ended函数上清除该变量。使用update函数是可行的,但这是一种非常低效的方式

我猜当他们把手指放在屏幕上的时候,你希望发生一些事情。当他们触摸屏幕时,你可以在比方说2秒内安排一个事件,然后如果他们在此之前释放屏幕,你就取消事件。

票数 0
EN

Stack Overflow用户

发布于 2014-08-18 09:48:07

代码语言:javascript
运行
复制
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方法,则不会调用任何代码。在不知道你打算如何使用触摸的情况下,我不能给你更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25352470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档