Tag: uigesturerecognizer

UIGestureRecognizer接收触摸,但也转发给UIControl

你会如何让一个UIView的UIGestureRecognizer接收一个触摸事件,但也要确保另一个底层/覆盖UIView也接收到这个非常相同的触摸事件? 可以说我有以下的看法 – hierachie: 视图A(蓝色)和B(红色)都是同一个超级视图(灰色)的子视图。 换句话说,他们都是兄弟姐妹,顺序决定哪一个涵盖另一个。 选项1:视图B(红色)有一个常规的UIButton作为其子视图。 选项2:视图A(蓝色)有一个常规的UIButton作为子视图。 鉴于解释的select1:视图A(蓝色)有一个UITapGestureRecognizer (或甚至更多,其他UIGestureRecognizers)附加。 什么是最优雅的方法来确保UIButton确实能够接触到它的所有区域,而且A(蓝色)视图接受了UITapGestureRecognizer触摸? 如果可能的话,解决scheme不应该涉及扩展UIButton类,并手动转发button本身的任何事件。 想象一下,视图B将包含更多的控件,而不仅仅是一个button。 所有这些控件应该以某种方式允许视图A在其UIGestureRecognizer上接收触摸。 我确实提供了两个选项,因为我不关心那些视图(A或B)中的哪一个先到达,只要两者都接收到触摸即可。 到目前为止,我所有的做法都突然传到了死胡同里。 也许一个自定义响应者链将是一个很好的解决scheme? 我一直认为在整个UIKit / UIEvent / UIResponder堆栈中必须有一个优雅的解决scheme。

长时间在UITextView的单词中获取单词

现在我已经在UITextView中检测到很长时间了 – (void)viewDidLoad { [super viewDidLoad]; UILongPressGestureRecognizer *LongPressgesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressFrom:)]; [[self textview] addGestureRecognizer:LongPressgesture]; longPressGestureRecognizer.delegate = self; } – (void) handleLongPressFrom: (UISwipeGestureRecognizer *)recognizer { CGPoint location = [recognizer locationInView:self.view]; NSLog(@"Tap Gesture Coordinates: %.2f %.2f", location.x, location.y); } 现在,我应该怎么做才能得到长时间的单词的内容,并得到这个单词的准备,以显示PopOver?

UIGestureRecognizer为UIView的一部分

我在iOS应用程序中使用UIGestureRecognizer,并遇到一些问题。 我只想让手势在视图的某个区域工作,所以我创build了一个具有特定框架的新UIView,并将其添加到根视图。 手势正常工作,但现在唯一的问题是,我不能点击在新视图下的东西(在根视图上的对象)。 如果我将userInteractionEnabled设置为NO,它将打破手势,因此不是一个选项。 我能做些什么来解决这个问题? 谢谢。

用UIWebView进行手势识别

我在我正在构build的应用程序中设置了一些手势识别。 其中一个手势是单指单击,将工具栏隐藏在屏幕的顶部。 除了一件事情以外,还有很好的效果:点击链接也会导致工具栏消失。 是否有可能检测到不是一个链接上的水龙头? 我可以通过查看轻敲发生的位置来做到这一点,只有在html链接中没有发生时才采取行动? 这是可能的,一个指示如何确定一个链接被挖掘是有帮助的。 每个八月的build议,我曾尝试将UIWebView包装在一个UIView。 我正在使用接口生成器,所以我在层次结构中插入了一个视图,并使UIWebView成为新UIView的“子”。 现在层次结构如下所示: 我在视图控制器中为视图添加了一个IBOutlet,并在界面构build器中将其链接起来。 我改变了手势识别器设置看起来像这样: UITapGestureRecognizer* singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)]; singleTap.numberOfTouchesRequired=1; singleTap.delegate=self; [self.UIWebViewContainer addGestureRecognizer:singleTap]; [singleTap release]; 这段代码驻留在viewDidLoad中。 与以前一样,代码正确地看到一个单指单击,但是在UIWebView中的一个链接上点击也导致工具栏消失。 如果链接未被点击,我只希望工具栏消失。 任何人有任何build议? 谢谢。 克里斯 谢谢Chris

使用变换旋转时调整UIView的大小

当我的UIView旋转变换属性( CGAffineTransformMakeRotation ),我需要拖动它的一个angular落,说右下angular,调整它的大小。 在此过程中,当用户拖动angular落时,视图的angular落必须跟随用户的手指,并通过增加2个边(右下angular和右下angular拖动的底部尺寸)来调整框的大小。 调整UIView大小并不那么困难,因为当您不能转换盒子时,可以使用框架和触摸位置。 例如,我会记得初始框架和触摸附加到UIPanGestureRecognizer这个可resize的视图的UIPanGestureRecognizer handler ,并在StateChanged我会计算从初始触摸的触摸点X,Y差异,并将这些值添加到初始帧的宽度和高度。 但是,在应用转换时,对于旋转的UIView ,帧是可靠的。 所以我只能靠bounds和center 。 我创build了这个代码,但它几乎工作:我只能按比例放大所有4个方向,而不是一个。 – (void)handleResizeGesture:(UIPanGestureRecognizer *)recognizer { CGPoint touchLocation = [recognizer locationInView:self.superview]; CGPoint center = self.center; switch (recognizer.state) { case UIGestureRecognizerStateBegan: { deltaAngle = atan2f(touchLocation.y – center.y, touchLocation.x – center.x) – CGAffineTransformGetAngle(self.transform); initialBounds = self.bounds; initialDistance = CGPointGetDistance(center, touchLocation); initialLocation = touchLocation; if ([self.delegate respondsToSelector:@selector(stickerViewDidBeginRotating:)]) […]

如何像Tinder投票一样拖动控件? (见图片)

显然有一个意见,uimage视图和uilabel。 如何让拖动理解移动到正确的投票和左移一个负面的投票? 火种

如何捕获UIPanGestureRecognizer中最初点击的点?

我有一个让用户在屏幕上跟踪线的应用程序。 我正在通过loggingUIPanGestureRecognizer中的点来做到这一点: -(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer { CGPoint pixelPos = [recognizer locationInView:rootViewController.glView]; NSLog(@"recorded point %f,%f",pixelPos.x,pixelPos.y); } 这工作正常。 不过,我非常感兴趣的是在用户开始平移之前用户点的第一点。 但是,上面的代码只给了我手势被识别为一个平底锅(与水龙头) 之后发生的点。 从文档看来,可能没有简单的方法来确定UIPanGestureRecognizer API中最初引用的位置。 尽pipe在UIPanGestureRecognizer.h中,我发现了这个声明: CGPoint _firstScreenLocation; 似乎是私人的,所以没有运气。 我正在考虑走出UIGestureRecognizer系统,只是为了捕获这个初始点,然后在知道用户确实已经开始UIPanGesture的时候再回头看看。 我以为我会在这里问,但在走下这条路之前。

点击UITableViewCell中的UIImageView识别

目前我正面临一个问题,我想在UITableViewCell上的UIImageView被点击时执行操作。 问:我怎么能这样做? 任何人都可以看到代码或任何教程吗? 提前致谢!

如何在UISollectionViewCell中使用UILongPressGestureRecognizer?

我想弄清楚当我长按一个单元格时,如何打印UICollectionViewCell的indexPath。 我怎么能在Swift中做到这一点? 我已经看遍了所有的例子如何做到这一点; 在Swift中找不到一个。

用滑动手势closures键盘(如在消息应用程序中)

当iPhone的Messages应用程序显示键盘时,如果用户从消息tableview开始向下滑动并继续进入键盘区域,键盘将开始closures。 如果在这个过程中他们的手指上下移动,键盘会随之移动。 苹果是用私有API来做这件事,还是有办法像这样控制键盘(我认为)手势识别器?