0

我的iPhone應用程序(基於Xcode中的「單一視圖應用程序」)有一個UITextView(比如:myTextView),我希望用戶能夠編輯。我將它設置爲可編輯,並且一切正常(我甚至不必調用becomeFirstResponder)。如何從一個UITextView激活鍵盤上的(二級)的UIWindow

然後我把它在另一個的UIWindow(比如:newWindow)(主/根/鍵一個被稱爲self.window(單一視圖應用程序的頂部)。)。

但是現在,當我點擊的UITextView,鍵盤不顯示。

一切正常,如果我這樣做:

[myTextView setEditable:YES];
[myTextView becomeFirstResponder]; //醜陋...我不需要它,但我添加它以防萬一...
[self.window addSubview:newWindow];

但鍵盤立即顯示(因爲我設置becomeFirstResponder),這是不好的。 但是,如果我刪除了becomeFirstResponder行,鍵盤不會顯示在所有

如果我移動[self.window addSubview:newWindow]線以上,那麼無論我做什麼,鍵盤沒有被激活...

[self.window addSubview:newWindow]。 //這是應該如何...但是,
[myTextView setEditable:YES];
[myTextView becomeFirstResponder]; //甚至當我進入這個,它不工作:-(

我試過[newWindow makeKeyAndVisible]什麼都沒有。我試圖在UITextView中平添一份委託和檢測觸摸(或手勢),他們工作(我得到了包括NSLog的消息),但是再次沒有鍵盤,我甚至試圖在newWindow之上添加另一個(主窗口的)字段(以便在主窗口元素的頂部),仍然沒有運氣...

我缺少什麼

回答

3

你不應該添加一個UIWindow作爲一個子視圖相反,窗口都顯示通過調用 - [的UIWindow makeKeyAndVisible],或者 - [的UIWindow setHid如果您不希望它接收關鍵事件,請將其刪除。

雖然您很少需要使用多個窗口。只是使用一個普通的UIView添加,作爲一個子視圖將在許多情況下。

編輯:我對「分配給一個屏幕」前有一個令人困惑的言論。 UIWindow有一個屬性「屏幕」,如果你想在另一個屏幕上顯示窗口而不是主屏幕,你可以指定它。不過,您不需要關心您的用例。 「

+0

」給窗口分配一個屏幕「......你是什麼意思?怎麼樣? 我瞭解你的評論的第一部分,但不是第二部分。 我應該添加myTextView到另一個視圖(作爲子視圖),將它們分組,我明白。但不是「將窗口分配給窗口」部分。 – Gik 2012-05-03 09:27:41

+0

很好的答案。有用。 ! – 2013-07-04 14:50:03