2015-05-21 6 views
6

Использование CorePlot версии 1.6. Запуск iOS 8.3.Прокрутка ядра Core iOS не работает

Я использую Core-Plot с ScatterPlot для представления кратных строк. Когда я прокручиваю, график перемещается в прыжки и блокируется. Я не знаю, что произойдет. Вы можете мне помочь? Вот мой код:

#import <UIKit/UIKit.h> 
#import "CorePlot-CocoaTouch.h" 
@interface TemporalLineViewController:UIViewController<CPTPlotDataSource, 
CPTScatterPlotDelegate> 

@property (strong, nonatomic) IBOutlet CPTGraphHostingView *hostingView; 

@end 


@interface TemporalLineViewController(){ 
    NSMutableDictionary *dates; 
} 
@property (nonatomic, readwrite, strong) NSArray *plotData; 
@end 

@implementation TemporalLineViewController 
-(CPTGraph *)createGraph{ 
    initWithFrame:CGRectMake(viewGraph.frame.origin.x, viewGraph.frame.origin.y, 500, viewGraph.frame.size.height)]; 

    CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:hostingView.bounds]; 
    [graph applyTheme:[CPTTheme themeNamed:kCPTSlateTheme]]; 
    hostingView.hostedGraph=graph; 

    // Axes 
    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; 
    CPTXYAxis *x   = axisSet.xAxis; 
    x.majorIntervalLength   = CPTDecimalFromDouble(ONEDAY); 
    x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0); 
    x.minorTicksPerInterval  = 0; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd/MM/yyyy"]; 
    CPTTimeFormatter *timeFormatter = [[CPTTimeFormatter alloc] initWithDateFormatter:dateFormatter]; 
    timeFormatter.referenceDate = [[NSDate alloc]init]; 
    x.labelFormatter   = timeFormatter; 
    x.labelRotation    = CPTFloat(M_PI_4); 

    CPTXYAxis *y = axisSet.yAxis; 
    y.hidden=YES; 
    y.orthogonalCoordinateDecimal = CPTDecimalFromInt(0); 
    return graph; 
} 

-(void)createScatterPlot{ 

    CPTGraph * graph = [self createGraph]; 

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; 
    NSTimeInterval xLow  = 0.0; 
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(xLow) length:CPTDecimalFromDouble(ONEDAY * 10.0)]; 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(-1) length:CPTDecimalFromDouble(5.0)]; 
    plotSpace.allowsUserInteraction = YES; 
    plotSpace.allowsMomentum = YES; 

    CPTScatterPlot *diagnosticPlot = [self createScatterPlotWithIdentifier:DIAGNOSTIC_PLOT withLineColor:[CPTColor greenColor] withFillColor:[CPTColor greenColor]]; 
    CPTScatterPlot *vaccinePlot = [self createScatterPlotWithIdentifier:VACCINE_PLOT withLineColor:[CPTColor blackColor] withFillColor:[CPTColor blackColor]]; 
    CPTScatterPlot *interventionPlot = [self createScatterPlotWithIdentifier:INTERVENTION_PLOT withLineColor:[CPTColor blueColor] withFillColor:[CPTColor blueColor]]; 
    CPTScatterPlot *smokingHabitPlot = [self createScatterPlotWithIdentifier:SMOKING_HABIT_PLOT withLineColor:[CPTColor yellowColor] withFillColor:[CPTColor yellowColor]]; 
    CPTScatterPlot *menstrualPlot = [self createScatterPlotWithIdentifier:MENSTRUAL_PLOT withLineColor:[CPTColor redColor] withFillColor:[CPTColor redColor]]; 
    CPTScatterPlot *menstrualTreatmentPlot = [self createScatterPlotWithIdentifier:MENSTRUAL_TREATMENT_PLOT withLineColor:[CPTColor orangeColor] withFillColor:[CPTColor orangeColor]]; 
    CPTScatterPlot *psychomotorMilestonePlot = [self createScatterPlotWithIdentifier:PSYCHOMOTOR_MILESTONE_PLOT withLineColor:[CPTColor purpleColor] withFillColor:[CPTColor purpleColor]]; 

    [graph addPlot:vaccinePlot toPlotSpace:plotSpace]; 
    [graph addPlot:diagnosticPlot toPlotSpace:plotSpace]; 
    [graph addPlot:interventionPlot toPlotSpace:plotSpace]; 
    [graph addPlot:smokingHabitPlot toPlotSpace:plotSpace]; 
    [graph addPlot:menstrualPlot toPlotSpace:plotSpace]; 
    [graph addPlot:menstrualTreatmentPlot toPlotSpace:plotSpace]; 
    [graph addPlot:psychomotorMilestonePlot toPlotSpace:plotSpace]; 
} 

-(CPTScatterPlot *)createScatterPlotWithIdentifier:(NSString *)identifier withLineColor:(CPTColor *)lineColor withFillColor:(CPTColor *) fillColor{ 
    CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init]; 
    dataSourceLinePlot.identifier = identifier; 

    CPTMutableLineStyle *lineStyle = [dataSourceLinePlot.dataLineStyle mutableCopy]; 
    lineStyle.lineWidth    = 3.0; 
    lineStyle.lineColor    = lineColor; 
    dataSourceLinePlot.dataLineStyle = lineStyle; 
    CPTPlotSymbol *plotSymbol2 = [CPTPlotSymbol ellipsePlotSymbol]; 
    plotSymbol2.fill    = [CPTFill fillWithColor:fillColor]; 
    plotSymbol2.size    = CGSizeMake(10.0, 10.0); 
    dataSourceLinePlot.plotSymbol = plotSymbol2; 

    return dataSourceLinePlot; 
} 

-(void)generateData{ 
    NSMutableArray *data = [NSMutableArray array]; 

    [data addObject:[self createDiagnosticData]]; 
    [data addObject:[self createVaccineData]]; 
    [data addObject:[self createInterventionData]]; 
    [data addObject:[self createSmokingHabitData]]; 
    [data addObject:[self createMenstrualData]]; 
    [data addObject:[self createMenstrualTreatmentData]]; 
    [data addObject:[self createPsychomotorMilestoneData]]; 
    self.plotData = data; 
} 

#pragma mark - 
#pragma mark Plot Data Source Methods 

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot 
{ 
    NSLog(@"numberOfRecordsForPlot"); 
    if ([plot.identifier isEqual:DIAGNOSTIC_PLOT]) { 
     NSMutableArray *data = self.plotData[0]; 
     return data.count; 
    }else if([plot.identifier isEqual:VACCINE_PLOT]){ 
     NSMutableArray *data = self.plotData[1]; 
     return data.count; 
    } else if([plot.identifier isEqual:INTERVENTION_PLOT]){ 
     NSMutableArray *data = self.plotData[2]; 
     return data.count; 
    } else if([plot.identifier isEqual:SMOKING_HABIT_PLOT]){ 
     NSMutableArray *data = self.plotData[3]; 
     return data.count; 
    } else if([plot.identifier isEqual:MENSTRUAL_PLOT]){ 
     NSMutableArray *data = self.plotData[4]; 
     return data.count; 
    } else if([plot.identifier isEqual:MENSTRUAL_TREATMENT_PLOT]){ 
     NSMutableArray *data = self.plotData[5]; 
     return data.count; 
    } else if([plot.identifier isEqual:PSYCHOMOTOR_MILESTONE_PLOT]){ 
     NSMutableArray *data = self.plotData[6]; 
     return data.count; 
    } 
    return 0; 
} 

-(id)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{ 
    NSLog(@"numberForPlot"); 
    if ([plot.identifier isEqual:DIAGNOSTIC_PLOT]) { 
     NSMutableArray *data = self.plotData[0]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     if ([str intValue]==0) { 
      return nil; 
     } 
     return data[index][@(fieldEnum)]; 
    }else if([plot.identifier isEqual:VACCINE_PLOT]){ 
     NSMutableArray *data = self.plotData[1]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     return data[index][@(fieldEnum)]; 
    }else if([plot.identifier isEqual:INTERVENTION_PLOT]){ 
     NSMutableArray *data = self.plotData[2]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     return data[index][@(fieldEnum)]; 
    }else if ([plot.identifier isEqual:SMOKING_HABIT_PLOT]) { 
     NSMutableArray *data = self.plotData[3]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     if ([str intValue]==0) { 
      return nil; 
     } 
     return data[index][@(fieldEnum)]; 
    }else if ([plot.identifier isEqual:MENSTRUAL_PLOT]) { 
     NSMutableArray *data = self.plotData[4]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     if ([str intValue]==0) { 
      return nil; 
     } 
     return data[index][@(fieldEnum)]; 
    }else if ([plot.identifier isEqual:MENSTRUAL_TREATMENT_PLOT]) { 
     NSMutableArray *data = self.plotData[5]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     if ([str intValue]==0) { 
      return nil; 
     } 
     return data[index][@(fieldEnum)]; 
    }else if([plot.identifier isEqual:PSYCHOMOTOR_MILESTONE_PLOT]){ 
     NSMutableArray *data = self.plotData[6]; 
     NSString *str = [NSString stringWithFormat:@"%@",(data[index][@(fieldEnum)])]; 
     return data[index][@(fieldEnum)]; 
    } 
    return nil; 
} 
+0

У вас есть решение? – Iducool

+0

Наконец-то я нашел. В моем случае контроллер моего представления находится в контроллере просмотра слайдов, а слайд-представление имеет жест панорамы. Этот жест жеста противоречил свитке. Таким образом, если кто-то страдает от таких проблем, тогда ищите жесты или любую пользовательскую обработку сенсорных событий. – Iducool

ответ

0

ли перенастройка контента размер вашей точки зрения скроллинга? Если нет, то переустановите его на размер кадра ScatterPlot , если это только просмотр внутри прокрутки..

+0

У меня нет прокрутки. Свиток принадлежит ScatterPlot. – oremag14jf

+0

Тогда вы попробуете это включить в UIScrollView? Или измените кадр графика рассеяния так, чтобы он мог вписаться в рамки рамки. – Rajesh

+0

Я не хочу включать его в UIScrollView. График показывает хорошо, масштабирование работает хорошо, но когда я делаю прокрутку на другую сторону, график прокрутки останавливает его. – oremag14jf

Смежные вопросы