【问题标题】:EXC_BAD_ACCESS when Switching between UITextBorderStyleNone and RoundRect on UITextField在 UITextField 上的 UITextBorderStyleNone 和 RoundRect 之间切换时的 EXC_BAD_ACCESS
【发布时间】:2012-01-21 03:50:17
【问题描述】:

我想不出在运行时在 TextField 上的两种不同边框样式之间来回切换而不会导致应用程序崩溃的方法。

我知道如何编码(如下所示):

- (void)switchToStaticView
{
    [nameTextField setBorderStyle:UITextBorderStyleNone];

    // rest of code snipped out
}

- (void)switchToEditView
{
    [nameTextField setBorderStyle:UITextBorderStyleRoundedRect];

    // rest of code snipped out
}

返回 StyleNone 时出现“EXC_BAD_ACCESS”错误。我相信这是 IOS5 和/或 Xcode 4.2 的问题 - 有谁知道如何解决这个问题?

【问题讨论】:

  • 这里没有什么突出的。 nameTextField 是如何定义的?你在用ARC吗?它是一个属性还是只是一个 ivar?
  • 是的,我使用的是 ARC,它定义为属性而不是 iVar... @property (weak, nonatomic) IBOutlet UITextField *nameTextField;

标签: ios5 uitextfield xcode4.2


【解决方案1】:

将属性定义改为强引用

@property (strong, nonatomic) IBOutlet UITextField *nameTextField;

弱引用用于停止循环引用。阅读更多ARC Lifetime Qualifiers

【讨论】:

  • 将其更改为 strong 并没有解决问题,尝试返回 UITextBorderStyleNone 时仍然遇到相同的错误。有趣的是,如果我将 switchToEditView 方法更改为使用 UITextBorderStyleBezel 而不是 RoundedRect 它可以完美运行并且没有问题!奇怪!...
  • 我刚找到另一个帖子,这些人也遇到了和我一样的问题,但是这个帖子没有解决问题...stackoverflow.com/questions/7759729/…
【解决方案2】:

尝试在设置边框样式之前设置背景颜色 - 插入:titleTextField.backgroundColor = [UIColor clearColor]; 为我修复了它。 (通过UITextView setBorderStyle crashes in iOS 5 Simulator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多