我觉得这很奇怪,我创建了自己的继承自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可能是相关的。
感谢任何帮助。
答案 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属性,一切都按预期运行。