2014-01-24 55 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