Tag: touchesbegan

自定义UIView触摸区域

你好我有一些奇怪的形状,我需要处理touchesBegan方法。 问题是UIViews是正方形的,唯一的办法就是可以声明一个网格,然后检查坐标。 还有其他的方法吗?

EXC_BAD_ACCESS在touchesBegan之后

我已经开始了一个学习iOS编程的非常简单的项目,但是在touchesBegan之后我得到了EXC_BAD_ACCESS 。 您可以在这里从DropBox下载项目。 我基本上有一个UIView子类,应该在用户触摸的地方绘制圆圈。 很简单,但我不能让它工作。 任何帮助,高度赞赏。 谢谢! 编辑原来这个问题是在touchesBegan这行代码: ts = [NSMutableSet setWithSet: [event touchesForView:self]]; 我改成: ts = [[NSMutableSet setWithSet: [event touchesForView:self]] retain];

混淆Swift中的反转触摸事件

在我的function override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){ for touch in touches{ let touchLocation = touch.location(in: self.view) print("X: \(touchLocation.x) Y: \(touchLocation.y)") } } 我得到逆转的Y值。 如果我点击顶部,我会得到〜0值,如果我点击底部,我会得到高价值。 这使我的精灵im移动在错误的Y方向。 但是,如果我删除self.view中的“.view”它应该像它应该。 有谁知道为什么它倒过来,当我使用self.view?

iOS:为什么touchesBegan在UIView的某些特定区域有一些延迟

我正在制作一个自定义的键盘,我处于一个非常奇怪的情况。 我注意到,当我在UIView(inputView)的左后方(约20像素)捕捉事件touchesBegan时,我会在这里有一些延迟。 我在touchesBegan做的任何动作都会比其他区域慢。 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { self.keypop.hidden = false } override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { { self.keypop.hidden = true } 而这个麻烦影响我的应用程序的性能。 在这个例子中,当我触摸左后方时,我不会看到keypop出现,因为self.keypop.hidden被延迟显示。 我不知道为什么,或者这是从iOS 9的错误? 我一直困在这个麻烦了一个星期。

SKSpriteNode不规则的滑动?

我已经创build了以下sprite工具包节点: SKSpriteNode *megadeth; megadeth = [SKSpriteNode spriteNodeWithImageNamed:@"megadeth_rocks.png"]; megadeth.name = @"awesome"; 并添加了滑动手势如下: -(void)didMoveToView:(SKView *)view{ UISwipeGestureRecognizer *recognizerUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUp:)]; recognizerUp.direction = UISwipeGestureRecognizerDirectionUp; [[self view] addGestureRecognizer:recognizerUp]; UISwipeGestureRecognizer *recognizerDn = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeDn:)]; recognizerDn.direction = UISwipeGestureRecognizerDirectionDown; [[self view] addGestureRecognizer:recognizerDn]; } – (void)handleSwipeUp:(UISwipeGestureRecognizer *)sender{ NSLog(@"Node Swiped Up"); if (sender.state == UIGestureRecognizerStateEnded) { CGPoint touchLocation = [sender […]

viewDidLayoutSubviews在touchesBegan之后调用 – 一次又一次

在一个iPhone的文字游戏中,我有一个UIScrollView (持有UIImageView )和7个可拖动的自定义UIView最初放置在底部(和滚动视图外): 在单个ViewController.m中,我已经覆盖了viewDidLayoutSubviews所以它总是设置zoomScale的滚动视图 – 使UIImageView完全填充屏幕宽度的100%。 这适用于纵向和横向模式。 而当应用程序刚刚开始: 然而, 我的问题是,当我第一次捏/放大/双击滚动视图,然后移动七个Tile.m视图之一: 突然(不是每次都)在touchesBegan之后调用viewDidLayoutSubviews 。 这将重置滚动视图的缩放 – 意外地为用户。 我的问题是,如果有什么方法来禁用这种行为? 当它的子UIView被触摸/拖动时,是否有可能阻止父viewDidLayoutSubviews调用? 更新: 我已经将zoomScale设置代码从viewDidLayoutSubviews到了didRotateFromInterfaceOrientation并且滚动视图缩放现在可以,但是当(不是总是)拖动一个Tile时,它的contentOffset被重置为{0,0} – 即滚动视图突然跳转,该应用程序无法使用。 添加以下内容到viewDidLoad没有帮助: if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) self.automaticallyAdjustsScrollViewInsets = NO;

可拖动的UIView在添加到UIScrollView后停止发布touchesBegan

在Xcode 5.1中,我为iPhone创build了一个简单的testing应用程序 : 结构是: scrollView -> contentView -> imageView -> image 1000 x 1000的顶部。 而在单视图应用程序的底部,我有七个可拖动的自定义UIView 。 通过touchesXXXX方法在Tile.m中执行拖动操作。 我的问题是:一旦我添加一个可拖动的瓷砖到contentView我的ViewController.m文件 – 我不能拖动它了: – (void) handleTileMoved:(NSNotification*)notification { Tile* tile = (Tile*)notification.object; //return; if (tile.superview != _scrollView && CGRectIntersectsRect(tile.frame, _scrollView.frame)) { [tile removeFromSuperview]; [_contentView addSubview:tile]; [_contentView bringSubviewToFront:tile]; } } touchesBegan不再被调用Tile ,就好像scrollView可以屏蔽该事件。 我周围search ,有一个build议,以下面的方法(在我的自定义GameBoard.m )扩展UIScrollView类: – (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { […]

在SpriteKit中,touchesBegan和SKScene更新方法在同一个线程中运行吗?

在这里的Apple文档中, 高级场景处理描述了update方法以及如何渲染场景,但是没有提及何时处理input。 不清楚它是否与渲染循环处于同一个线程中,或者与渲染循环是否一致。 如果我有一个对象,我从SKScene update方法和touchesBegan方法update (在这种情况下的SKSpriteNode ),我必须担心同步两个访问到我的对象吗?

如何在UIPanGestureRecognizer方法中获取当前触点和上一个触点?

我是新来的iOS,我在我的项目中使用UIPanGestureRecognizer 。 我在拖动视图时需要获取当前触摸点和上一个触摸点。 我正在努力得到这两点。 如果我使用touchesBegan方法而不是使用UIPanGestureRecognizer ,我可以通过下面的代码得到这两点: – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ CGPoint touchPoint = [[touches anyObject] locationInView:self]; CGPoint previous=[[touches anyObject]previousLocationInView:self]; } 我需要在UIPanGestureRecognizer事件触发方法中获得这两点。 我怎样才能做到这一点? 请指导我。

UIGestureRecognizers与touchesBegan / touchesMoved / touchesEnded(准确性)

我正在打印使用这两种触摸跟踪方法得到的点列表。 手势识别器比较容易使用,但是如果比较touchesBegan过程中得到的点,识别器会避免一些点,特别是在运动开始时。 有人知道这两个程序之间的准确性是否有差异? 谢谢!