UITextField上的无效上下文0x0(Xcode 5)

5

我在我的应用程序中使用了一个UITextField。我使用了[textfield becomeFirstResponder]。这样做很好,可以在视图加载时加载键盘。然而,在我再次点击UITextField并弹出它后,就会出现这个错误。我不太明白为什么会这样,但这里是我收到的输出:

CGContextSetFillColorWithColor: invalid context 0x0.
CGContextSetStrokeColorWithColor: invalid context 0x0. 
CGContextSaveGState: invalid context 0x0. 
CGContextSetFlatness: invalid context 0x0. 
CGContextAddPath: invalid context 0x0. 
CGContextDrawPath: invalid context 0x0. 
CGContextRestoreGState: invalid context 0x0. 
CGContextSaveGState: invalid context 0x0. 
CGContextSetFlatness: invalid context 0x0. 
CGContextAddPath: invalid context 0x0.
CGContextDrawPath: invalid context 0x0. 
CGContextRestoreGState: invalid context 0x0.

这是我的代码:

// ViewController.h
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *textField;

@end


// ViewController.m
@synthesize textField;

- (void)viewDidLoad
{
    [textField becomeFirstResponder];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

你能发一些更多的代码吗? - Priyatham51
1
我的意思是我真的不知道我还能添加多少源代码哈哈。它相当自我解释。不过我已经编辑过了@Priyatham51 - Zack
这个 bug 的惊人之处在于你可以零代码复现它——甚至不需要文本字段的出口。然而,为了复现警告,双击时文本字段必须完全为空。此外,这个 bug 在 iOS 7.0.3 中仍然存在,无论是在模拟器上还是在设备上。 - bilobatum
2个回答

4
我相信你发现了一个iOS的bug(或者至少是模拟器的bug)。你可以更简单地重现它:
  • 新建项目(单视图)
  • 将UITextField拖放到故事板上
  • 运行
  • 点击UITextField。
  • 从UITextField上点击离开
  • 再次点击UITextField
  • (在某些情况下,你需要再次从UITextField上点击离开)
  • 观察错误
我建议您打开一个radar。

谢谢您的回复。我认为这可能是模拟器的错误,但不确定。我只是担心这个应用程序会被制作出来,然后无法正常工作,所以我想看看在堆栈溢出上得到什么回应。您能解释一下什么是雷达吗?我会去做的。 - Zack
3
雷达是bugreport.apple.com的昵称。“一个雷达”是在该系统上开启的缺陷报告。(供您娱乐:名称“Radar”来自电视剧《陆军医院》,有个名叫雷达的角色总能在你询问之前就知道你想要什么。) - Rob Napier
@Zack,你填写了这个雷达吗?我也遇到了完全相同的问题。 - amb
1
是的,我有。@amb实际上它被关闭了,因为它是一个重复的问题。 "工程部门已经确定你的错误报告是另一个问题的重复,并将被关闭。你的问题被复制到的原始错误报告的开放或关闭状态出现在错误报告用户界面右侧列的顶部,bug详细视图下方的黄色“Duplicate of XXXXXXXX”部分。该部分出现在bug编号、标题、状态、产品和排名的正下方。" - Zack

-2

看起来您正在屏幕上绘制一些内容。您需要编写在drawRect方法中绘制的代码。您可能已经在别处编写了代码。在drawRect方法内部,确保检查上下文是否存在。

CGContextRef context = UIGraphicsGetCurrentContext();
   if (context) {
        // Do your stuff
           }

如果您直接复制并粘贴我上面给出的源代码到一个带有 UITextField 的 Xcode 5 storyboard 新项目中,当您点击所创建的 UITextField 时会出现错误。 - Zack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接