为UITextField设置委托时,应用程序崩溃

时间:2012-07-10 08:49:08

标签: objective-c ios uitableview delegates uitextfield

我是一个应用程序,表视图实例化一个名为“NameCell”的类中的单元格对象,该类具有名为“NameCellView.xib”的nib文件(Name Cell是NameCellView的类)。在NameCellView.xib视图控制器中,有一个名为“NameField”的UITextField。现在我已经尝试将UITextField(NameField)委托设置为文件所有者(例如,cell = NameCell的类)。但是当我这样做时,应用程序会在我尝试与文本字段进行交互时崩溃(例如,当我点击它时),我得到的唯一消息是'(lldb)'并且以下行在main.m中以绿色突出显示app文件:

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

关于为什么会发生以及如何解决问题的任何想法?当用户点击“返回”键时,我试图做的所有id都会关闭键盘,所以如果你有一个更好的方法没有授权就可以做到这一点我很满意!

非常感谢你的帮助!任何评论都非常感谢!

2 个答案:

答案 0 :(得分:0)

根据描述,事情并不清楚。但请检查xib中的连接。我认为问题出在xib连接

答案 1 :(得分:0)

如果您打开其他方法来解除键盘,可以添加一个“完成”按钮,在点击时,调用“hideKeyboard”方法。

您可以将此按钮添加到键盘配件视图(基本上是一个简单的UIToolBar,带有一些自定义功能,使其看起来不错)。

我不知道如何使用Interface Builder执行此操作,但我知道如何使用纯代码执行此操作:

// setup done button accessory view for keyboard

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[toolBar setBarStyle:UIBarStyleBlackTranslucent];

UIButton *btnDone = [[UIButton alloc] initWithFrame:CGRectMake(20, 8, 65, 30)];
[btnDone setTitle:@"Done" forState:UIControlStateNormal];
btnDone.titleLabel.font = [UIFont fontWithName:@"Arial-BoldMT" size:14];
btnDone.backgroundColor = [UIColor darkGrayColor];
btnDone.layer.cornerRadius = 5.0;
btnDone.tintColor = [UIColor darkGrayColor];
[btnDone addTarget:self action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchUpInside];

[toolBar addSubview:btnDone];

[btnDone release];

// -------------------------------------------------------------------
// let your text field's keyboard know about the accessory view
// -------------------------------------------------------------------
myTextField.inputAccessoryView = toolBar;

...

// Hide Keyboard Method
-(void)hideKeyboard
{
    [myTextField resignFirstResponder];
}

这将在键盘上方添加自定义视图,以便您可以按“完成”按钮隐藏键盘。