2014-05-09 11 views
1

다음 코드를 사용하여 프로그래밍 방식으로 UIToolbar을 추가하고 있습니다. 그것은 기본 이미지 편집을 처리해야하지만 도구 모음에서 아무 버튼이나 누르면이 오류 메시지가 대신 표시되고 선택기가 호출되지 않습니다. viewController는 UINavigationController에 임베드되어 있고 UIScrollViewUIImageView입니다.도구 모음 단추 선택기가 콘솔의 메시지와 함께 실행되지 않았습니다. <Error> : CGContextSaveGState : 유효하지 않은 컨텍스트

나는이 상황에서 iOS의 버그이기 때문에 오류가 무시 될 수도 있음을 발견했습니다. 그러나 제 선택기에서도이 메시지와 함께 호출되지 않습니다. 나는 또한 누군가가이 오류를 0 크기의 CGContext로 얻었고 CGContext로 캡처하는 일부 이미지를 찾았지만 제대로 작동하고 툴바 버튼과 선택기와 관련이 없다. 어떤 제안?

<Error>: CGContextSaveGState: invalid context 0x0. This is a serious error. 
This application, or a library it uses, is using an invalid context and is 
thereby contributing to an overall degradation of system stability and 
reliability. This notice is a courtesy: please fix this problem. It will 
become a fatal error in an upcoming update. 

코드 :

- (void)addBasicToolbar 
{ 
    // create toolbar 
    UIToolbar *basicToolbar = [[UIToolbar alloc] init]; 
    basicToolbar.barStyle = UIBarStyleBlack; 
    basicToolbar.translucent = NO; 
    basicToolbar.translatesAutoresizingMaskIntoConstraints = NO; 
    [self.view addSubview:basicToolbar]; 

    // add constraints 
    NSDictionary *metrics = @{@"barHeight":@44.0}; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[basicToolbar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(basicToolbar)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[basicToolbar(==barHeight)]|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(basicToolbar)]]; 

    // add bar buttons 
    UIBarButtonItem *rotateLeft = [[UIBarButtonItem alloc] initWithTitle:@"Rotate left" style:UIBarButtonItemStylePlain target:self action:@selector(rotateLeft)]; 
    UIBarButtonItem *rotateRight = [[UIBarButtonItem alloc] initWithTitle:@"Rotate right" style:UIBarButtonItemStylePlain target:self action:@selector(rotateRight)]; 
    UIBarButtonItem *resetButton = [[UIBarButtonItem alloc] initWithTitle:@"Revert to original" style:UIBarButtonItemStylePlain target:self action:@selector(resetToOriginal)]; 
    UIBarButtonItem *markupButton = [[UIBarButtonItem alloc] initWithTitle:@"Add markup" style:UIBarButtonItemStylePlain target:self action:@selector(addMarkup)]; 
    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

    basicToolbar.items = @[resetButton, flexibleSpace, rotateLeft, rotateRight, flexibleSpace, markupButton]; 
} 

- (void)rotateLeft 
{ 
    NSLog(@"rotate left called"); // but is actually not called 
} 

답변

0

나는 끝에있는 문제를 발견했다. 터치 이벤트를 취소하고 탭바에 도달하지 않은 탭 제스처 인식기가 있습니다. CGContext 오류가 왜 나타나는지 아직 알 수 없습니다.