2012-07-10 115 views
0

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

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

任何想法为什么会发生,以及如何解决它?我试图做的所有事情id用户点击'返回'键时关闭键盘,所以如果你有更好的方式做到这一点,没有委派,我都是耳朵!

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

回答

0

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

+0

连接只是将'委托'从连接菜单拖到'文件所有者'的简单连接。我还没有添加任何代码 – byteSlayer 2012-07-10 09:05:54

+0

请检查所有连接。 – 2012-07-10 09:11:01

+0

那么,当我在UITextFields连接检查器中查看代理连接时,bur我无法看到它,当我在视图连接Inspector中查看其中所有其他连接。那是问题吗? – byteSlayer 2012-07-10 09:17:26

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]; 
} 

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

相关问题