UITextField:不能输入文本,但是表情符号,复制/粘贴和退格都可以

时间:2012-06-25 20:30:21

标签: ios4 uitableview uitextfield xcode4.3 uitextfielddelegate

我觉得这很奇怪,我创建了自己的继承自UIAlertView的类。在这个类中,我添加了一个UITableView作为子视图,单元格包含一个UILabel和一个UITextField。

该类实现:UITableViewDelegate,UITableViewDataSource和UITextFieldDelegate,

在cellForRowAtIndexPath中,每个cell.uiTxtField.delegate都设置为self。

在模拟器和真实iPhone设备上都会发生以下情况:

  • 当我在UITextField中设置指针/手指时,弹出键盘和 触发 textFieldDidBeginEditing ,这很好并且符合预期。

  • 当我离开UITextField时,会触发 textFieldDidEndEditing , 这也很好并且符合预期。

  • 但是当我开始输入文字时,光标停止闪烁但没有文字 输入到UITextField。

  • 我可以通过在包含文本的UITextField中按住指针/手指来复制并粘贴文本,选择副本然后将其粘贴到另一个UITextField(或相同)中。

  • 退格工作正常。

  • 我也可以输入符号和表情符号等。

  • 我唯一无法输入的是字符/字母和数字

  • 返回按钮触发 textFieldShouldReturn

由于textFieldDidBeginEditing和textFieldDidEndEditing被触发,我认为我的委托设置没问题,但我无法理解为什么我不能输入文本以及为什么不触发textFieldShouldReturn。

This可能是相关的。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您是否已将其置于自定义类的“init”方法中?

尝试在您的实现文件中添加这样的代码......

@implementation CustomAlertClass <UITextFieldDelegate>

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    //
    self.YourTextField.delegate = self;
}
return self;
}

@end

答案 1 :(得分:0)

简短回答:确保您没有任何与UITextField上的“编辑”属性混淆的代码。

我有同样的症状,我肯定正确设置委托,并调用textFieldDidBeginEditing和textFieldDidEndEditing,但没有调用textFieldShouldReturn和shouldChangeCharactersInRange。我也无法输入任何字符,但我可以将粘贴复制到文本字段中。在我的情况下,我也碰巧将文本字段放在UITableView中的单元格中。我的情况略有不同,因为删除按钮不起作用。

我错了,是因为我没有在我的单元格中使用原始UITextField,我有自己的UITextField子类。我的子类有一个属性'isEditing',我在UITextFieldDelegate方法中进行修改,并用于确定在选择文本字段时如何滚动表视图。这覆盖了UITextField上的'isEditing'方法,用作UITextField'editing'属性的getter。一旦我摆脱了我的子类isEditing属性,一切都按预期运行。