我的iPhone应用程序(基于Xcode的“单一视图应用程序”)有一个UITextView(比如:myTextView),我希望用户能够编辑。我将它设置为可编辑,并且一切正常(我甚至不必调用becomeFirstResponder)。
然后我将它移动到另一个UIWindow(例如:newWindow)(在main / root / key之上,名为self.window(单视图应用程序)。)。
但现在,当我点击UITextView时,键盘不会显示。
如果我这样做,一切都有效:
[myTextView setEditable:YES];
[myTextView becomeFirstResponder]; //丑陋......我不需要它,但我加上它以防万一...... [self.window addSubview:newWindow];
但是键盘会立即显示(因为我设置了firstFirstResponder)并不好看。 但如果我删除了becomeFirstResponder行,键盘就不会显示 !
如果我移动上面的[self.window addSubview:newWindow]行,那么无论我做什么,键盘都不会被激活......
[self.window addSubview:newWindow]; //这应该是怎么样的......但是,
[myTextView setEditable:YES];
[myTextView becomeFirstResponder]; //即使我输入它,它也不起作用:-(
我尝试了[newWindow makeKeyAndVisible]。我试图在UITextView上添加一个触摸委托并检测一个触摸(或一个手势),它们工作(我得到了我包含的NSLog消息),但同样没有键盘。我甚至试图在newWindow的顶部添加另一个(主窗口的)字段(以便在顶部有一个主窗口元素),但仍然没有运气......
我错过了什么?
答案 0 :(得分:3)
您不应该将UIWindow添加为子视图。相反,如果您不希望它接收关键事件,则通过调用 - [UIWindow makeKeyAndVisible]或 - [UIWindow setHidden:NO]来显示窗口。
您很少需要使用多个窗口。只是使用普通的UIView添加添加,在很多情况下,子视图将会这样做。
编辑:在关于"分配到屏幕"之前,我有一个令人困惑的评论。 UIWindow有一个属性" screen",如果你想在除主屏幕之外的另一个屏幕上显示窗口,你可以指定它。但是,您不需要为您的用例关心这一点。