我已经覆盖了子类,它拒绝调用 touchesShouldCancelInContentView。我发誓我以前写过代码来做到这一点。我正在覆盖该类,以便某些 View 不会将触摸事件传递给 ScrollView 。
与类(class)
@interface SlidingWindowScrollView : UIScrollView
{
UIView* noTouchView;
}
@property (nonatomic, retain) UIView* noTouchView;
@end
和实现
@implementation SlidingWindowScrollView
@synthesize noTouchView;
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
BOOL shouldCancel = NO;
if(view == noTouchView)
shouldCancel = YES;
NSLog(@"shouldCancel %d", shouldCancel);
return shouldCancel;
}
@end
在 xib 中,我在其中放下了一个 ScrollView 和一个 uiview,并将其写入确实加载的 VC View 中。
scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width*2,
scrollView.bounds.size.height);
scrollView.pagingEnabled = YES;
scrollView.canCancelContentTouches = YES;
contentView.frame = CGRectMake(scrollView.frame.size.width + 20,
0,
scrollView.frame.size.width,
scrollView.frame.size.height);
contentView.userInteractionEnabled = YES;
scrollView.noTouchView = contentView;
[scrollView setContentOffset:CGPointMake(scrollView.bounds.size.width, 0) animated:YES];
不知道是什么原因。这应该是一个简单的覆盖。我确保自定义类在 XIB 中是正确的,并且所有媒体都说这是我的 UIScrollView 的新子类。我不是故意放肆,但最新的 iOS API 有什么问题吗?这看起来应该很容易,但它从未调用函数 touchesShouldCancelInContentView。我很困惑。如果有人能证明我错了并让 scrollView 调用此函数,我将不胜感激。我想应该注意的是,打印语句确实打印了,但可以始终如一地完成
如果您可以在您的机器上运行它,请告诉我,因为我没有发现任何错误。这让我发疯@_@希望有人能帮助我。谢谢。
最佳答案
据我所见,您不会得到 touchesShouldCancelInContentView: 或 touchesShouldBegin:withEvent:inContentView: 回调,除非您将 delaysContentTouches 设置为 NO:
scrollView.delaysContentTouches = NO;
关于objective-c - 未调用 touchesShouldCancelInContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129143/