在过去的四个小时,我已经尝试了许多堆栈过低的解决方案,但没有帮助解决我的问题。
这里是,
- 我有一个UIScrollView
- 内滚动型有一个自定义的UILabel和8周自定义的UIImageViews
- 我想检测长按
事情是这样的作品
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
longPress.minimumPressDuration = 0.5; [scroll addGestureRecognizer:longPress]; //scroll defined elsewhere
但是,如果我有滚动的任何子视图代替滚动,长按事件永远不会触发。
- 如何检测一个滚动视图的子视图长按?
- 这是一个相当混乱的黑客,但是,因为我可以检测一个滚动视图中长按,有没有什么办法,我可以检测印刷机的位置,这样我可以看到被压哪些具体子视图。
另外, (insert subview here).userInteractionEnabled = YES
,我将此属性设置为我的滚动视图的所有子视图,所以这不应该是一个问题。
我在堆栈溢出其他地方的建议也使用的touchesBegan和touchesEnded方法尝试。
此外,对于图像的观点,我不设置新的UILongPressGestureRecognizer对每个自定义图像视图,使用for循环,因为我知道每个手势识别规则1点看法。
从第一时间iOS开发,
格雷厄姆
PS我真的很喜欢,如果我能找到一个解决方案为1,而不是凌乱2。
更多的代码的要求:
在视图控制器的初始化
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
longPress.minimumPressDuration = 0.5;
[self.titleLabel addGestureRecognizer:longPress]; //titleLabel property initialized elsewhere
[mainView addSubview:self.titleLabel];
在“负载的图像”的方法
for (NSData * dataImg in results) {
//Does some work turning data into an image, into an image view called img
img.delegate = self;
img.userInteractionEnabled = YES;
UILongPressGestureRecognizer *aLongPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
aLongPress.minimumPressDuration = 0.5;
[img addGestureRecognizer:aLongPress];
[imgContainer addSubview:img];
}
更多的代码+注
self.view(的UIView)
- >滚动(UIScrollView中)
- > - > MAINVIEW(UIView的)
- > - > - > titleLabel(的UILabel)
- > - > - > imgContainer(UIView的)
- > - > - > - >图像(的UIImageViews)
[self.view addSubview:scroll];
[scroll addSubview:mainView];
[mainView addSubview:self.titleLabel];
[mainView addSubview:imgContainer];
[imgContainer addSubview:img]; //done 8x via for loop
感谢@正则表达式的答案,我现在知道,MAINVIEW是越来越压制,但不是它的子视图,所以我需要找到一种方式来显示它上面的MAINVIEW的子视图。 :)
另一个更新,titleLabel工作。 ImageViews仍然没有工作,虽然。 :(