2011-11-30 25 views
1

我試圖在鍵盤出現時收到通知,但我處於有2個UITextViews並且需要能夠區分它們的情況。出於某種原因,我無法弄清楚如何使用「addObserver」的對象參數進行過濾。我有這樣的事情:AddObserver UIKeyboardWillShowNotification指定對象時遇到的問題

UITextView* w = mSubview.mText; 
NSNotificationCenter* dnc = [NSNotificationCenter defaultCenter]; 
[dnc addObserver:self selector:@selector(showNotesKeyboard:) name:UIKeyboardWillShowNotification object:w ]; 

每當我指定w我不進入showNotesKeyboard。只有當我通過nil時,通知纔會真正被接受。必須有我在這裏失蹤的東西,請幫助我。 謝謝!

回答

2

你可以添加一個觀察者到文本視圖開始編輯嗎?編輯將顯示鍵盤。

UITextView* w = mSubview.mText; 
[w addTarget:self action:@selector(showNotesKeyboard:) forControlEvents:UIControlEventEditingDidBegin]; 
+0

這看起來像可能工作。我明天會試一試。謝謝! – rhinoinrepose

+0

其他人注意:是的,這是有效的,如果選擇器方法正在執行動畫,它將與鍵盤滑動一起發生,與UIKeyboardWillShowNotification相同。由於這裏的觀察者是文本框本身,因此如果要將通知隔離到該字段,這是最佳選擇。否則,如果您想要選擇器調用* any *輸入字段,請使用UIKeyboardWillShowNotification並查看jbat100的答案。 – Wienke

1

根據我就會被調用,只有當它是零導致它是生成的通知系統,您可以指定只有當你創建一個自定義通知你的類的一個對象。我的意思是當你自己發佈這個通知。

1

這是UIKeyboardWillShowNotification文檔

在發佈之前立即鍵盤的顯示的討論。

通知對象爲零。 userInfo字典包含有關鍵盤的信息 。使用「鍵盤 通知用戶信息鍵」中描述的鍵從userInfo字典中獲取 鍵盤的位置和大小。

所以,如果你指定一個發件人對象而不是零,你將不會得到任何通知。如果你想知道哪個UITextView處於活動狀態,你可以檢查哪一個是第一響應者。

相關問題