我一直在玩这个代码,但不能正确。
当前行为:即使在点击按钮时,我也可以在 UIScrollView 上自由滚动。当我点击不是按钮的东西时,它会调用一个方法(就像我想要的那样),这是 UITapGestureRecognizer 的结果。但是,我必须按住按钮几秒钟,然后触摸它以触发按钮的 UIControlEventTouchUpInside。
我想要发生的事情:完全一样,但是能够轻松地触摸 UIButton,就像我在它所在的 View 上关闭 UITapGestureRecognizer 一样。
这是我的代码:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//...
[cell.xButton addTarget:self action:@selector(xButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
self.delaysContentTouches = YES;
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
[self addGestureRecognizer:tapGestureRecognizer];
tapGestureRecognizer.delegate = self;
}
}
- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
{
[self.header removeKeyboard];
}
最佳答案
如收藏 建议,您可以执行以下操作:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
UIView* touchedView = [touch view];
if([touchedView isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
这在大多数情况下都有效。此外,您可能希望使用
isDescendantOfView:
检查触摸的 View 是否是 ScrollView 的后代。 .希望能帮助到你。
关于iphone - 带有 UIButton 和 UITapGestureRecognizer 的 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153761/