6

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

该类实现:UITableViewDelegate、UITableViewDataSource 和 UITextFieldDelegate,

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

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

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

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

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

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

  • 退格工作正常。

  • 它还让我输入符号和表情符号等。

  • 我唯一不能输入的是字符/字母和数字

  • 返回按钮不会触发textFieldShouldReturn

由于触发了 textFieldDidBeginEditing 和 textFieldDidEndEditing 我假设我的委托设置很好,但我不明白为什么我不能输入文本以及为什么 textFieldShouldReturn 没有被触发。

可能是相关的。

任何帮助表示赞赏。

4

2 回答 2

0

你把它放在你的自定义类的“init”方法中了吗?

尝试将这样的代码放入您的实现文件中...

@implementation CustomAlertClass <UITextFieldDelegate>

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

@end
于 2013-09-04T12:51:43.757 回答
0

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

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

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

于 2013-12-04T02:05:41.970 回答