1

我的应用程序显示了一个水平滚动区域,其中应该包含两个使用Shinobi库实现的不同图表。由于我的分页 Scrollview 是使用ATPagingView 制作的,因此我使用以下代码包含了图表:

- (NSInteger)numberOfPagesInPagingView:(ATPagingView *)pagingView {
    return 2;
}
    - (UIView *)viewForPageInPagingView:(ATPagingView *)pagingView atIndex:(NSInteger)index {

        // Instantiate a tutorial item controller and initialise with the proper content
        self.chartView = [[ShinobiChart alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
        chartView.title = @"example charts";
        chartView.autoresizingMask = ~UIViewAutoresizingNone;
        // Use a number axis for the x axis.
        SChartNumberAxis *xAxis = [[SChartNumberAxis alloc] init];
        chartView.xAxis = xAxis;
        // Use a number axis for the y axis.
        SChartNumberAxis *yAxis = [[SChartNumberAxis alloc] init];
        chartView.yAxis = yAxis;
        chartView.datasource = self;
        chartView.userInteractionEnabled = YES;
        return chartView;
    }

图表显示正确,但是当我尝试滚动它时,可滚动容器不会移动以显示第二个图表。奇怪的是,如果我调整图表的大小以便有一些空间与底层容器交互,或者如果我使用普通视图执行相同的操作,例如:

- (UIView *)viewForPageInPagingView:(ATPagingView *)pagingView atIndex:(NSInteger)index {

        // Instantiate a tutorial item controller and initialise with the proper content
        self.chartView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
        return chartView;
    }

好吧..它工作得很好。看起来 ShinobiChart 视图以某种方式拦截了触摸事件而不转发到滚动视图。如您所见,我尝试激活用户交互,但它不起作用。将图表装箱到另一个视图中也不起作用。

任何的想法?

4

1 回答 1

0

在这里找到了一个可能的解决方案。显然是一个众所周知的问题,唯一的解决方法是禁用包含图表的视图的平移手势。

chartView.gesturePanType = SChartGesturePanTypeNone;

这是来源:

http://www.shinobicontrols.com/forum/shinobicontrols/2013/5/propagate-gesture-events-to- contains-controller-(shinobicharts)/

于 2013-06-11T14:03:48.487 回答