4

我的一些观点有问题,这是我的设置的简要概述:

Tab Bar Controller
|
--View Controller 1
|
--View Controller 2
|
--View Controller 2

在某个动作上,View Controller 1 会显示一个模态对话框。在此对话中,如果用户执行另一个动作,则显示另一个模态对话,使用第一个模态对话来呈现视图。

在第二个 ModalDialog 我有一个 UITextField,但是当我尝试在文本字段中输入时,什么也没有发生。即使显示了键盘并调用了 textFieldDidBeginEditing 方法。我已经设置了 UITextFieldDelegate 和必要的响应者,但无济于事。

有谁知道什么会导致这个问题?

非常感谢

4

4 回答 4

3

我发现,在许多情况下,视图和弹出窗口的文本字段没有正确聚焦您所描述的症状。在这些情况下,我最终会推迟becomeFirstResponder调用,直到动画完成或视图加载 - 例如在视图控制器viewDidAppear方法中。

becomeFirstResponder或者,只需对视图更改/动画/等所需的时间进行适当的估计来延迟调用,即:

[textField performSelector:@selector(becomeFirstResponder)
                withObject:nil
                afterDelay:0.3];
于 2011-06-18T07:17:01.383 回答
1

如果可能的话,我会尝试从视图控制器“链接”模式对话框。

  • VC 打开第一个模态对话框
  • 您的第一个模式对话框通知 VC(可能使用委托)。
  • (可能需要)关闭第一个模态对话框
  • VC 打开第二个模态对话框
  • 幸福!
于 2011-06-17T13:46:58.520 回答
0

我不确定您所说的“模态对话”是什么意思——我假设您的意思是具有模UIModalPresentationFormSheet态呈现样式的模态呈现视图控制器或 UIPopoverController。

这是我最好的猜测:我很确定您的“模态对话”捕获了所有用户交互(默认情况下)。所以当推第一个时,它会捕获所有输入焦点。当推第二个时,它与前一个的捕获冲突,因此键盘将无法工作。

无论如何,这两种类型的“模态对话”都不是要叠加的。即使它在技术上可行,我也不喜欢它形成交互设计的观点。与其尝试修复错误或解决它,不如尝试重新考虑您的模态对话。你可以把所有东西都放在一个里面。例如,通过在该视图中使用导航控制器,或者通过替换视图或翻转它的内容......等等。

希望这会有所帮助,马克斯

于 2011-06-17T13:40:45.703 回答
0

如果我是你,我会考虑修改导航层次结构。模态对话框被认为已经够糟糕了,但是在模态对话框中加入模态对话框就是用户界面自杀。它会给用户带来混乱,并且非常非传统。有什么方法可以使用第一个模式弹出窗口并简单地交换内容?

旁注:您提到将视图设置为UITextViewDelegate. 您是否将视图视为文本框的代表?你是回来NO还是FALSE- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

于 2011-06-21T15:19:07.993 回答