我的一些观点存在问题,这是我设置的简要概述:
Tab Bar Controller
|
--View Controller 1
|
--View Controller 2
|
--View Controller 2
在某个动作上,View Controller 1将显示模态对话框。在此对话框中,如果用户执行另一个操作,则会显示另一个模态对话框,使用第一个模态对话框来显示视图。
在第二个ModalDialog上我有一个UITextField,但是当我尝试输入文本字段时,没有任何反应。即使显示键盘并调用textFieldDidBeginEditing方法。我已经设置了UITextFieldDelegate和nessessary响应者,但无济于事。
有谁知道会导致这个问题的原因?
非常感谢
答案 0 :(得分:3)
我发现在很多情况下,视图和弹出窗口都在改变,文本字段没有正确地聚焦于您所描述的症状。在这些情况下,我最终推迟becomeFirstResponder
调用,直到动画完成或视图已加载 - 例如在视图控制器viewDidAppear
方法中。
或者,只需将调用推迟到becomeFirstResponder
,并适当估计视图更改/动画等所需的时间,即:
[textField performSelector:@selector(becomeFirstResponder)
withObject:nil
afterDelay:0.3];
答案 1 :(得分:1)
如果可能的话,我会尝试从视图控制器“链接”模态对话框。
答案 2 :(得分:0)
我不确定你对“模态对话”的意思 - 我假设你的意思是模态呈现的视图控制器,具有UIModalPresentationFormSheet
模态演示样式或UIPopoverController。
这是我最好的猜测:我非常确定您的“模态对话”会捕获所有用户互动(默认情况下)。因此,在推送第一个时,它会捕获所有输入焦点。当推动第二个时,它的捕获与之前的捕获冲突,因此键盘将无法工作。
无论如何,两种类型的“模态对话”并不意味着堆叠。即使它可能在技术上有效,但我不喜欢它形成了一种交互设计的视角。而不是试图修复错误或解决它,尝试重新思考你的模态对话。您可以将所有内容整合到一个中。例如,在该视图中使用导航控制器,或者通过替换视图或翻转其内容......等。
希望这有帮助,Max
答案 3 :(得分:0)
如果我是你,我会考虑修改导航层次结构。模态对话框被认为是不够的,但在模态对话框中加入模态对话框是用户界面自杀。它会给用户造成混淆,非常不传统。有什么方法可以使用第一个模态弹出窗口并简单地交换内容吗?
附注:您提到将视图设置为UITextViewDelegate
。您是否将视图作为文本框的委托?您是否从NO
返回FALSE
或- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
?