UITextFieldDelegate崩溃(exc_bad_access)

时间:2014-04-01 11:45:18

标签: ios uikit uitextfield uitextfielddelegate

我觉得UITextFieldDelegate有问题。

我刚刚创建了一个响应UITextFieldDelegate协议的视图控制器,并轻松地将该字段添加到xib,然后设置委托字段......你知道。

但是当我尝试按下该字段时(开始编辑,程序崩溃)。

当我尝试以编程方式创建字段时,会发生同样的事情。

这是调用堆栈:

enter image description here

以下是完整代码:

·H

#import <UIKit/UIKit.h>

@interface TopBar : UIViewController <UITextFieldDelegate>
{
    IBOutlet UITextField * field_top;
}

的.m

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    NSLog(@"textFieldShouldBeginEditing");
    textField.backgroundColor = [UIColor colorWithRed:220.0f/255.0f green:220.0f/255.0f blue:220.0f/255.0f alpha:1.0f];
    return YES;
}

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

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    NSLog(@"textFieldShouldEndEditing");
    textField.backgroundColor = [UIColor whiteColor];
    return YES;
}

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

代表由IB设定。

错误截图:

enter image description here

请帮助。

2 个答案:

答案 0 :(得分:2)

确保您的.h

中有此内容
@interface TopBar : UIViewController <UITextFieldDelegate> {

}

@property (nonatomic, weak) IBOutlet UITextField *field_top;

并从@interface

中删除
IBOutlet UITextField * field_top;

听起来你的field_top正在发布,而你之后尝试访问它,这就是它崩溃的原因。

答案 1 :(得分:0)

我找到了答案。 解决方案是使用addChildViewConroller,而不仅仅是addSubview。 希望它会对某人有所帮助......