clearButton在UITextEditField中不起作用

时间:2012-05-28 21:29:44

标签: ios uitextfield

这是“它之前正在进行的”故障排除工作之一。

我正在处理文档预览视图控制器,其中是一个滚动视图,它本身包含代表每个文档的UIView的子类。我正在非常接近Keynote如何处理其文档预览,除了我水平构建滚动视图和分页。但是存在标准的用户体验:长按文档图标会导致所有文档图标开始摇晃,nab bar有+按钮和编辑按钮等。

当前的问题是,当您点击文档的名称时,我会隐藏所有其他文档,将正在编辑的文档移动到正面和中间,构建新的文本编辑字段,将其添加为真实姓名上的子视图标签,并将其设置为第一响应者;但是

     [editNameTextField setClearButtonMode:UITextFieldViewModeWhileEditing];

当用户点击清除按钮时,在编辑字段中正确显示时没有采取任何操作。

我无法弄清楚我可能做了什么导致它无法正常工作 - 它曾经是!

我的第一个想法是,不知何故,我的子类实例不再是此文本编辑字段的委托。为了尝试确认/否认,我篡改了文档预览的图像视图,将委托属性与self进行比较,然后通过。

if (editNameTextField) {
    NSLog(@"editNameTextField is still active");
    if ([editNameTextField.delegate isEqual:self]) {
        NSLog(@"we're still the delegate for the editNameTextField");
    }
}

编辑编辑字段中的文本可以正常工作。按Return / Done键正确发送委托消息textFieldShouldReturn:

在研究这个时,我实现了委托方法textFieldShouldClear:,只是为了在调用方法时写一条日志消息(当然返回YES)。永远不会被召唤。

我的下一个想法是,或许子视图覆盖了清晰按钮所在的区域。所以我实现了textFieldShouldBeginEditing:并利用这个机会将我的文本字段放到了前面。这也没有改变任何事情。我在那里设置了一个调试器断点,当它被调用时播放声音,并且它被调用,所以我知道我的文本编辑字段是最前面的。

我只剩下一种故障排除策略:通过快照向后移动,直到它再次开始工作。在此之前,我想我会看看这里有经验丰富的人是否有任何关于下一步尝试的建议。

1 个答案:

答案 0 :(得分:2)

你在哪里添加文本字段?作为scrollView的子视图?如果您添加了文本字段并且它超出了其父视图的范围,则不会接收任何触摸。

您可以尝试而不是调用becomeFirstResponder,看看点击它是否会显示键盘。另一个可能的错误可能是UITextField的父视图具有userInteractionEnabled = NO。

如果没有看到更多代码,我恐怕无法提供更多解决方案。