0

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

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

关于为什么会发生这种情况以及如何解决它的任何想法?当用户点击“返回”键时,我要做的就是关闭键盘,所以如果你有更好的方法来做到这一点而无需授权,我会全力以赴!

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

4

2 回答 2

0

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

于 2012-07-10T09:03:35.767 回答
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];
}

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

于 2012-07-10T12:23:46.563 回答