Tag: uitapgesturerecognizer

带目标的UITapGestureRecognizer – Swift

我试图做一个简单的点击手势,我无法弄清楚。 我想添加一个目标,简单的select器的手势。 这是我的代码: var panGesture : UIGestureRecognizer = UITapGestureRecognizer.addTarget(<#UIGestureRecognizer#>) 我如何设置select器?

iOS – UITapGestureRecognizer – 带参数的select器

在我的应用程序中,我在运行时dynamic添加图像到我的视图。 我可以在屏幕上同时显示多个图像。 每个图像都是从一个对象中加载的。 我已经添加了一个tapGestureRecongnizer的图像,以便当我点击它时调用适当的方法。 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; [plantImageView addGestureRecognizer:tapGesture]; 我的问题是,我不知道我已经挖掘了什么形象。 我知道我可以打电话tapGestureRecognizer.location获得屏幕上的位置,但那对我来说并不是那么好。 理想情况下,我希望能够将图像加载的对象从轻击手势中传递出去。 但是,似乎我只能通过select器名称“imageTapped:”而不是它的参数。 – (IBAction)imageTapped:(Plant *)plant { [self performSegueWithIdentifier:@"viewPlantDetail" sender:plant]; } 有没有人知道一种方式,我可以通过我的对象作为参数到tapGestureRecongnizer或任何其他方式,我可以得到它的处理? 谢谢 布赖恩

检测UIScrollView上的触摸事件和UIView的组件

我有我的简单的故事板iPad项目UIViewController包含UIScrollView放置在整个表面(1024 x 768)。 我已经创build了3个XIV文件,这些文件是我的应用程序在viewDidLoad中加载的UIViews,并将它们添加到UIScrollView中。 这3个XIB文件中的每一个都只包含一个UIButton。 这是层次结构: 〜UIViewController( UIViewControllerClass是这个UIViewController的类) ~~ UIScrollView(包含3个相同的UIViews) UIView( UIViewClass是这个XIB文件的文件所有者) ~~~~ UIButton 我想我的UIViewControllerClass变得意识到两个:触摸UIScrollView组件上的任何地方,如果UIScrollView被触摸,如果UIScrollView中的UIView里面的UIButton被触摸,以确切的信息,该button被触摸。 我在UIViewClass里面创build了IBAction,以便在UIScrollView中的UIView里面使用UIButton,当我在所有元素(UIViewController,UIView和UIScrollView)上设置User Interaction Enabled = YES时,就像调用它一样。 但在这一点上,我的UIViewControllerClass不知道该触摸发生在该UIButton上的UIScrollView。 我做了这样的触摸识别器: UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch)]; touch.numberOfTouchesRequired = 1; 并将其添加到UIScrollView组件。 通过这种方式,我能够在UIViewControllerClass中检测UIScrollView组件上的触摸事件,但是在UIScrollView中的UIView中触摸UIButton的事件处理程序不会再被调用。 所以,我需要在UIViewControllerClass中有这两个信息: 触摸UIScrollView组件 触摸在UIScrollView(如果这个button被触摸)的UIView中的UIButton 我想附加触摸事件识别器到整个UIScrollView组件是不是解决scheme,因为它禁用所有我写在UIViewClass中的触摸事件处理程序。 我认为解决scheme是以某种方式触及哪些在UIView里面的组件UIScrollView应该发送到UIViewControllerClass,但我没有find一种方法来做到这一点。 如果有人能帮助我,我会非常感激。 提前致谢。 [编辑#1:郑的回答] 点按手势必须将cancelsTouchesInView选项设置为NO ! 对于我上面的情况,这条线解决了一切: touch.cancelsTouchesInView = NO; 非常感谢郑。

如何获取一个自定义表格视图单元格的索引path,当它的UIImage被UITapGestureRecognizer在prepareForSegue

确定标题中的很多variables,对不起,我不能再简单一些。 首先,我有一个自定义表格单元格,像这样的描述 现在,当用户点击单元格本身时,它将转到视图A,但是,有一个UITapGestureRecognizer连接到左侧的UIImage,它连接到一个继续到视图B. 一切正常,但我需要一些数据,这是在表视图单元格内,我可以传递到视图B,所以它可以做一些东西一旦显示视图。 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if(segue.identifier == "toViewA") { }else if( segue.identifier == "toViewBFromThatImage" ){ let viewBVC = ( segue.destinationViewController as! viewBVC ) ///////sender is UITapGestureRecognizer ///////somehow want to get indexpath here viewBVC.selectedIndex = SOMEHOW DIRREVED INDEXPATH } } 也许我应该设置一些东西作为UIImage的标签或手势对象初始化时? 还是应该避免在prepareForSegue中做这个呢? 还是新的这个,所以任何意见,不胜感激。

select器来获取indexPath UICollectionView Swift 3.0

我试图获得两次点击单元格上的indexPath 。 我在这样的Selector传递参数,但它给错误。 这是什么正确的格式? func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { if let subOptioncell : SubOptionsCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: subOptionsCVReuseIdentifier, for: indexPath) as! SubOptionsCollectionViewCell let imageNamed = "\(customizeOptionSelected[indexPath.row])" subOptioncell.subOptionsImage.image = UIImage(named: imageNamed) let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped(sender: indexPath))) tap.numberOfTapsRequired = 2 collectionView.addGestureRecognizer(tap) return subOptioncell } } func doubleTapped(sender: IndexPath) { print("Double […]

iOS:TapGestureRecognizer问题

所以我有一个应用程序,就像一个照片库,我正在实现用户删除图像的能力。 这里是设置:我有9 UIImageViews,imageView,imageView2等。我也有一个“编辑”button,tapGesture行动方法。 我将一个Tap Gesture识别器拖到IB的视图中,并将其附加到每个UIImageView。 我还将tapGesture操作方法附加到每个UIImageView。 理想情况下,我希望方法只有在按下“编辑”button时才能激活。 当用户点击编辑,然后点击他们想要删除的图片,我想要一个UIAlertView出现,问他们是否确定要删除它。 这是我正在使用的代码: – (IBAction)editButtonPressed:(id)sender { editButton.hidden = YES; backToGalleryButton.hidden = NO; tapToDeleteLabel.hidden = NO; } – (IBAction)tapGesture:(UITapGestureRecognizer*)gesture { UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete" message:@"Are you sure you want to delete this photo?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil]; [deleteAlertView show]; if (buttonIndex != [alertView cancelButtonIndex]) { UIImageView *view = […]

button水龙头和长按手势

我在手势上有点麻烦 我正在尝试使用同一button上的轻按和长按,所以我使用了 @IBAction func xxx (sender: UITapGestureRecognizer) 和 @IBAction func xxx (sender: UILongPressGestureRecognizer) 但是当我点击时,我的button似乎对这两个function都有反应。 什么可能是错的? func long(longpress: UIGestureRecognizer){ if(longpress.state == UIGestureRecognizerState.Ended){ homeScoreBool = !homeScoreBool }else if(longpress.state == UIGestureRecognizerState.Began){ print("began") } }

如何在子视图中检测轻击手势

快速的问题:我如何检测点击手势识别器是否被添加到视图的子视图内? 例如。 如果我点击一个对象,例如已添加为子视图的方块,并添加了轻拍手势识别器,那么如何检测到它已被轻敲?

在iOS 7手势识别器的问题

我添加了几个UIView对象(例如5)到屏幕上,一个在另一个里面。 这个例如view5.superview = view4 , view4.superview = view3 , view3.superview=view2 , view2.superview = view1 。 对于所有这些UIView我设置uitapgesturerecognizer; 对于view1-4,我只是在callback中做NSLog(@“tap%@”,self),而对于view5,我设置了以下内容:从层次结构中删除view4,然后把相同的对象view4'放在层次结构的相同位置。 这个对象还包含view5', UITapGestureRecognizer设置UITapGestureRecognizer (实际上,我用相似的一个replace标记的一部分)。 然后我开始点击view5。 有些时候,view5一直在捕捉它的抽头,一切正常,但随后的抽头数(每当这个数字不同时),其中一个view1-4对象开始捕捉这个抽头,尽pipe我们仍然在点击view5。 整个问题具有随机性 – 有时发生在第十次发射,有时发生在第二次发射。 有时候错误的物体会在第一次敲击时开始捕捉水龙头。 当我遇到一切错误的时候,我也不知道什么东西会碰到水龙头。 视图(n + 1)的帧被设置为例如帧视图(n)的一半,而视图1的帧 – 例如(0,0 320,460)。 上述所有使用UI对象的操作都是在主线程中进行的,而且我所讲的所有关于iOS 4.3 – 6.1的工作都有很多复杂的例子。 但是iOS7使它成为某种随机的地狱。 更新:我创build了一个示例项目,以简化debugging过程。 点击不添加/删除子视图操作。 在屏幕上只有4个视图,点击应用程序logging点击的视图。 所以,你需要挖掘最小的观点(4)。 如果在日志中看到“点击4点击4点击4点…” – 这是一切正常的情况下,停止和再次运行,停止和再次运行,停止和再次运行等等。在一些运行(也许10 +成功的运行)你不会在第一行看到“点击4”,你会看到“点击1”或“点击2”或“点击3”,它会继续 – 这是坏的情况。 示例项目可以从这里下载: http : //tech.octopod.com/test/BuggySample.zip (在档案中只有33 Kb)。 更新2 […]

点击检测不能在UIImageView上工作

在我的.m文件中我添加了: @property (strong, nonatomic) UIImageView *star1; 然后用我做的一个方法: UIImage *star1Image; star1Image = [UIImage imageNamed:@"staryes"]; self.star1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; self.star1.tag = 800; [self.star1 setImage:star1Image]; [ratingLabelBody addSubview:self.star1]; 几行后,没有涉及到我有: [self.star1 setUserInteractionEnabled:YES]; UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgTouchUp:)]; tapped.numberOfTapsRequired = 1; [self.star1 addGestureRecognizer:tapped]; 最后在我已经实现的.m文件中: -(void)imgTouchUp:(id)sender { NSLog(@"imgTouchUp"); UITapGestureRecognizer *gesture = (UITapGestureRecognizer *)sender; NSLog(@"tap detected on […]