ios5 - 调用 UITextField 委托(delegate)程序时 iPhone 模拟器崩溃(带有 EXC_BAD_ACCESS)

标签 ios5 uitextfield ios-simulator uistoryboard uitextfielddelegate

所以我在 Controller 中放置了一些文本字段..

Controller 扩展了 UITextFieldDelegate,因此它可以处理这些文本字段的 textFieldDidBeginEditing,并且一切正常!

然后我尝试从名为 TestTextField 的新类中添加新的文本字段。

我将 Storyboard中的自定义类更改为 TestTextField 并按以下方式实现: (发生的情况是模拟器启动并且 NSLog 打印“init!”,然后当我按下 TestTextField NSLog 打印“begin”,之后模拟器停止并显示 EXC_BAD_ACCESS。)

TestTextField.m

#import "TestTextField.h"

@implementation TestTextField

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (id) initWithCoder:(NSCoder *) coder
{
    self = [super initWithCoder:coder];
    NSLog(@"init!");
    self.delegate = self;
    return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"begin");
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"end ");

}

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    return YES;
}

@end

TextField.h

#import <UIKit/UIKit.h>

@interface TestTextField : UITextField <UITextFieldDelegate>

@end

最佳答案

我有完全相同的问题,这似乎只发生在 iOS 模拟器 5 上。

看起来在 init 处设置委托(delegate)会导致应用程序崩溃。

只需注释 self.delegate = self 行即可消除错误。

所以我最终(不是很好,但是呃)将我的 self.delegate = self 放入重载的 - (void) TouchesBegan: 中。这样,我确信当有人开始输入时我的委托(delegate)就已设置。

关于ios5 - 调用 UITextField 委托(delegate)程序时 iPhone 模拟器崩溃(带有 EXC_BAD_ACCESS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10292568/

相关文章:

ios - 更改 textField 边框颜色 iOS

ios - 为什么在针对模拟器时框架包路径解析为 DerivedData 构建目录?

ios8 - Xcode 6 Beta iOS 8 Simulator 无法上网

iphone - 只显示一次设置窗口

objective-c - 使用核心数据的长时间运行的前台操作的最佳实践?

opengl-es - 使用 CVPixelBufferRef 和 Shaders 在 ffmpeg 的 OpenGL 中渲染 YUV 视频

ios - UITextField 通知

ios - 实现自动完成文本字段 Objective C

模态关闭后未调用 UIViewController 的 viewDidAppear

iphone - 将 NSString 转换为 NSTimeInterval