2014-01-24 56 views
2

我在一個單獨的類中有一個靜態方法來處理UIKeyboard。 WillHideNotification & UIKeyboard.WillShowNotification,以便它可以在整個應用程序中使用。在xamarin中獲取NSNotification的觀察者

我加入觀察者的視圖控制器通過以下方式: -

NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.WillHideNotification, KeyboardAppearanceUtilities.OnKeyboardNotification); 

我怎樣才能得到通知操作方法的觀測對象,在KeyboardAppearanceUtilities類聲明如下: -

public static void OnKeyboardNotification (NSNotification notification) 
{ 

} 

notification.Object始終爲空,原因很明顯,我沒有在AddObserver方法中設置對象參數。

有人可以指導我如何重新排列代碼,以便這個通知處理程序可以在整個應用程序中使用,也讓我訪問觀察員?

+0

在這種情況下,觀察者是你的'OnKeyboardNotification()'方法。你是指發件人嗎?這應該是鍵盤顯示的UIWindow,所以在大多數情況下只有唯一的應用程序窗口。 –

+0

是觀察者是OnKeyboardNotification方法,我怎樣才能訪問該方法中的發件人? notification.Object爲null。 – ilight

+0

如果notification.object爲null,那麼可能會發布通知而未指定對象。但在這種情況下,爲什麼你需要訪問發件人? –

回答

3

您的代碼將是一個要好很多,如果你使用強類型的通知:

http://iosapi.xamarin.com/?link=M%3aMonoTouch.UIKit.UIKeyboard%2bNotifications.ObserveWillHide

+0

謝謝!有沒有辦法讓我可以得到第一個響應的視圖,即鍵盤外觀原因的UITextField?我的計劃是 - 如果我得到這個原因的視圖,我也可以獲得viewcontroller的根視圖,然後調整根視圖的上/下框架。當我在共享的鏈接中應用代碼時,sender對象爲null。 – ilight