标签: uitapgesturerecognizer

如何在我的应用程序中实现UITapGestureRecognizer

我对编程和目标C都很陌生.我想知道如何制作一个有空白屏幕和计时器一分钟的应用程序.你的意思是尽可能快地点击,只要你可以.我想知道如何实现UITapGestureRecognizer我的代码.

user-interface objective-c uigesturerecognizer ios uitapgesturerecognizer

42
推荐指数
3
解决办法
7万
查看次数

ScrollView手势识别器吃掉所有触摸事件

UIScrollView添加了一个单击手势识别器来显示/隐藏一些UI叠加使用:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[scrollView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)

和:

- (void)handleTap:(UITapGestureRecognizer *)sender {
    // report click to UI changer
}
Run Code Online (Sandbox Code Playgroud)

我在底部添加了一个简单的表格视图UIScrollView.一切正常(水平和垂直滚动)但问题是点击仅由手势识别器(上图)识别,而不是由简单的表格视图识别.如果我删除注册手势监听器的行,一切正常,表视图会通知自己.

这就好像手势识别器功能"吃掉"表视图上的点击事件并且不向下传播它们.

任何帮助表示赞赏

objective-c uiscrollview ios uitapgesturerecognizer

39
推荐指数
5
解决办法
5万
查看次数

识别点击导航栏标题

可能有人请帮助我认识一个水龙头,当用户点击该标题导航栏

我想识别这个tap,然后动画tableHeaderView出现.可能会向下滑动TableView.

这个想法是用户可以选择一个快速选项(来自tableViewHeader)来重新填充TableView.

但是我无法识别任何水龙头.

我正在使用Swift.

谢谢.

uinavigationcontroller ios uitapgesturerecognizer swift

39
推荐指数
6
解决办法
2万
查看次数

iOS 7.1 UITapGesture无法使用UIPickerView

我们使用a UIPickerView来允许用户从选项列表中进行选择.我们将添加UIPickerView为容器UIView的子视图.然后我们将UITapGestureRecognizer添加到容器中UIView.在UITapGestureRecognizer正在使用经不起它的超级视图关闭该选择器.

在iOS 7.0及以前的版本中,这是按预期工作的.但是,在iOS 7.1中,此设置不再起作用,UITapGestureRecognizer即无法识别tap并调用操作中指定的选择器(取消选择器视图和容器视图).代码如下

   - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.nameList=[[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C", nil];
    UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    myPickerView.delegate = self;
    myPickerView.showsSelectionIndicator = YES;
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapInListPickerView:)];
    [singleTap setNumberOfTapsRequired:1];
    [singleTap setNumberOfTouchesRequired:1];
    [myPickerView addGestureRecognizer:singleTap];
    [self.view addSubview:myPickerView];
}

-(void)tapInListPickerView:(UIGestureRecognizer *)sender

{
    NSLog(@"Taped in pikcer view");
}
Run Code Online (Sandbox Code Playgroud)

如果需要任何其他信息或者有更优选的方法,请告诉我.

uipickerview uitapgesturerecognizer ios7.1

35
推荐指数
1
解决办法
1万
查看次数

iOS检测点击并修改UIView

我遇到了一个问题,即确定如何检测UIView被触及和UIView被点击.当它被触及时,我希望UIView改变它的背景颜色.当它被触摸时,我希望UIView执行某些任务.我想知道我是如何解决这个问题的.

-(void)viewDidLoad
{        
    UITapGestureRecognizer *dismissGestureRecognition = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDismissDoubleTap:)];
    dismissGestureRecognition.numberOfTapsRequired = 1;
    [sectionDismissDoubleView addGestureRecognizer:dismissGestureRecognition];

    UITapGestureRecognizer *dismissGestureDownRecognition = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissGestureDownRecognition:)];
    dismissGestureRecognition.numberOfTouchesRequired = 1;
    [sectionDismissDoubleView addGestureRecognizer:dismissGestureDownRecognition];
}

- (void)handleDismissDoubleTap:(UIGestureRecognizer*)tap {
    SettingsDismissDoubleViewController *settingsDouble = [[SettingsDismissDoubleViewController alloc] initWithNibName:@"SettingsDismissDoubleViewController" bundle:nil];
    [self.navigationController pushViewController:settingsDouble animated:YES];
}

- (void)dismissGestureDownRecognition:(UIGestureRecognizer*)tap {
    NSLog(@"Down");
}
Run Code Online (Sandbox Code Playgroud)

ios uitapgesturerecognizer

34
推荐指数
3
解决办法
4万
查看次数

如何在MKMapView上捕捉Tap手势

我正在尝试捕捉我的点击事件MKMapView,这样我就可以MKPinAnnotation在用户点击的点上删除.基本上我有一个覆盖的地图MKOverlayViews(显示建筑物的叠加层),我想通过删除MKPinAnnotaion并在标注中显示更多信息来为用户提供有关该叠加的更多信息.谢谢.

mkpinannotationview mkmapview ios4 mkoverlay uitapgesturerecognizer

31
推荐指数
2
解决办法
3万
查看次数

点击手势在uiimageview上无法识别

我添加了两个uiimageviews,一个在另一个subview uiview(imageview1,imageview2)上.在第一个视图中,顶部uiimageview是隐藏(imageview2),在第二个视图中,底部imageview是隐藏的(imageview1).

分配点按手势:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
UITapGestureRecognizer *singleTap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
Run Code Online (Sandbox Code Playgroud)

将uiimageview的用户交互设置为YES.

[singleTap setNumberOfTapsRequired:1];
[singleTap1 setNumberOfTapsRequired:1];
Run Code Online (Sandbox Code Playgroud)

//向uiimageview添加手势

分别添加轻击手势识别器和选择器.

[imageview1 addGestureRecognizer:singleTap];
[imageview2 addGestureRecognizer:singleTap1];
Run Code Online (Sandbox Code Playgroud)

但我的水龙头没有得到认可.

任何人都可以告诉我错误在哪里吗?

objective-c uiimageview uitapgesturerecognizer ios6.1

29
推荐指数
1
解决办法
3万
查看次数

如何检测UICollectionView中单元格的双击

我想响应UICollectionView中单元格的双击,并具有双击操作取消单元格选择.

这就是我尝试过的:

UITapGestureRecognizer *tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapRecogniser.numberOfTapsRequired = 2;

 for (UITapGestureRecognizer *recogniser in [self.collectionView gestureRecognizers]) {
    [recogniser requireGestureRecognizerToFail:tapRecogniser];
}

[self.collectionView addGestureRecognizer:tapRecogniser];
Run Code Online (Sandbox Code Playgroud)

也就是说,如果我的双击手势识别器成功,我试图让默认手势识别器失败.

这似乎不起作用,因为我的集合视图委托collectionView:didSelectItemAtIndexPath:仍然在双击后被调用


关于Apple的UICollectionViewController文档的注释

Apple的文档在这一点上有误导性,声称默认手势识别器是UITapGestureRecognizer子类的一个实例,所以可以很容易地选择它[recogniser isKindOfClass:[UITapGestureRecognizer class]].不幸的是,这是一个错误.

objective-c uikit ios uitapgesturerecognizer uicollectionview

28
推荐指数
4
解决办法
1万
查看次数

iOS 7中手势识别器的问题

UIView在屏幕上添加了几个对象(例如5个),一个在另一个内部.这一点,例如,view5.superview = view4,view4.superview = view3,view3.superview=view2,view2.superview = view1.对于所有这些UIView我设置了uitapgesturerecognizer; 对于view1-4我只是在回调中执行NSLog(@"tap%@",self),而对于view5,我设置以下内容:从层次结构中删除view4,然后将相同的对象view4'放在层次结构的同一位置.该对象还包含为其UITapGestureRecognizer设置的view5' (实际上,我用类似的一个替换标记的一部分).

然后我开始点击view5.有些时候view5继续捕捉它的点击,一切都没问题,但随后的点击随机数(每次这个数字不同),其中一个view1-4对象开始捕捉这个点击,虽然我们仍然点击view5.整个问题具有随机特征 - 有时它发生在第10次发射,有时发生在第二次.有时错误的物体会在第一次敲击时开始捕捉水龙头.当一切都出错时,我也永远不知道哪个物体会碰到水龙头.用于视图的帧(n + 1)被设置为例如帧视图(n)的一半,而用于view1的帧 - 例如(0,0 320,460).

上面描述的ui对象的所有操作都是在主线程中进行的,而我所讲述的所有内容都完全适用于iOS 4.3 - 6.1,并且有更复杂的例子.但是iOS7让它变成了一种随意的地狱.

更新: 我已经创建了一个示例项目,以简化调试过程.无需添加/删除子视图操作.屏幕上只有4个视图,点按应用程序会记录所点击的视图.因此,您需要点击最小的视图(4).如果你在日志中看到"点按4点击4点击4 ..." - 这就是一切正常,再次停止并再次运行,再次停止并再次运行等情况.在某些运行中(可能在10之后) +成功运行)你不会在第一行看到"点击4",你会看到"点击1"或"点击2"或"点击3",它将继续如此 - 这些都是坏情况.

示例项目可以从这里下载:http://tech.octopod.com/test/BuggySample.zip(归档中只有33 Kb).

更新2

我们已经向Apple发布了一个错误,我会在这里发布一些反馈意见.但是,任何好的解决方法都将非常感谢!

更新3

由Yuvrajsinh提供的解决方案真正致力于示例项目.不幸的是,它仍然没有帮助解决最初出现的主项目中出现的问题.现在的主要原因是,如果没有自我手势的任何视图都放在可点击内容上,则其下的随机视图元素开始捕捉交互(而不是具有交互手势集的顶部交互.你有任何想法如何解决它?更新的样本可以从这里下载:http://tech.octopod.com/test/BuggySample2.zip

gesture uigesturerecognizer ios uitapgesturerecognizer ios7

25
推荐指数
3
解决办法
2万
查看次数

如何在表格视图单元格中的UILabel中添加UITapGestureRecognizer?

我正在使用NIB文件来布局自定义表格视图单元格.此单元格有一个带有出口的标签,名为lblName.将UITapGestureRecognizer添加到此标签永远不会触发关联的事件.我有userInteractionEnabled = YES.

我猜测问题是UILabel在TableView中并且表/单元视图正在拦截水龙头.我能为此做点什么吗?

我想要做的就是在按下UILabel时执行一些自定义操作!我所见过的所有解决方案都是荒谬的.使用标准工具集应该很容易.但显然不是.

这是我正在使用的代码:

- (void)tapAction {
    NSLog(@"Tap action");
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib

    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)]; 
    [recognizer setNumberOfTapsRequired:1];
    //lblName.userInteractionEnabled = true;  (setting this in Interface Builder)
    [lblName addGestureRecognizer:recognizer];
}
Run Code Online (Sandbox Code Playgroud)

ios uitapgesturerecognizer

23
推荐指数
5
解决办法
4万
查看次数