【问题标题】:Toolbar button selector not fired with message in console: <Error>: CGContextSaveGState: invalid context工具栏按钮选择器未在控制台中触发消息:<错误>:CGContextSaveGState:无效上下文
【发布时间】:2014-05-09 15:01:39
【问题描述】:

我正在使用以下代码以编程方式添加UIToolbar。它应该处理基本的图像编辑,但是当我点击工具栏上的任何按钮时,我会收到此错误消息,并且不会调用选择器。 viewController 嵌入在UINavigationController 中,具有UIScrollViewUIImageView

我在这里发现该错误在某些情况下可能会被忽略,因为它是 iOS 中的一个错误,但是在我的情况下,我的选择器也不会与此消息一起被调用。我还发现有人在使用零大小的 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
}

【问题讨论】:

    标签: ios objective-c core-graphics uitoolbar cgcontext


    【解决方案1】:

    我最后发现了问题。我有点击手势识别器,它取消了触摸事件,它们从未到达标签栏。仍然不知道为什么会出现 CGContext 错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多