Xamarin 哪里是 Id 对象
Xamarin where is Id object
我正在将 objective-c 代码翻译成 Xamarion.iOS。
在objective-c中我有以下代码。
- (void)keyboardWasShown: (NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboadFrameBeginUserInfoKey] CGRectValue].size;
. . .
}
问题是 info objectForKey returns 一个具有 CGRectValue 方法的 Id 对象。
但是在 Xamarin 中我有...
private void KeyboardWasShown(NSNotification notification)
{
var info = notification.UserInfo;
var kbSize = (info.ObjectForKey(UIKit.UIKeyboard.FrameBeginUserInfoKey)).??
. . .
}
在 Xamarin 中,NSDictionary returns 一个 NSObject,但是 objective-c 版本 returns 一个 Id 对象。 NSObject 没有 CGRectValue 方法。
我的问题是 Xamarin 对 Id 对象做了什么以及我应该 class 转换什么以获得 CGRectValue。我试过投射到 UIView 但这没有帮助,除非我错过了什么。
我试过用谷歌搜索这个,但我只是在 iOSDevice Id 上得到了一堆点击。
编辑:
我还没有机会对此进行测试,但我想我找到了一种可能的方法。
var kbSize = ((UIView) info.ObjectForKey(UIKit.UIKeyboard.FrameBeginUserInfoKey)).Frame.Size;
我需要一段时间才能有机会测试从该 Id 返回的对象是否属于 UIView 类型。
在 Xamarin 中,您可以使用强类型通知,无需拆箱数据即可为您提供所需的一切。
查看示例:http://developer.xamarin.com/api/type/MonoTouch.UIKit.UIKeyboard/
在你的情况下,你想要 ObserveDidShow
而不是 ObserveDidChangeFrame
,但想法是一样的。
就是说,如果您仍想使用其他方法,则 ObjectForKey 调用产生的值是一个 NSValue,因此您要做的是将结果转换为 NSValue,然后使用 CGRectValue 属性.
更新:完整link到你想要的样本:
我正在将 objective-c 代码翻译成 Xamarion.iOS。
在objective-c中我有以下代码。
- (void)keyboardWasShown: (NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboadFrameBeginUserInfoKey] CGRectValue].size;
. . .
}
问题是 info objectForKey returns 一个具有 CGRectValue 方法的 Id 对象。
但是在 Xamarin 中我有...
private void KeyboardWasShown(NSNotification notification)
{
var info = notification.UserInfo;
var kbSize = (info.ObjectForKey(UIKit.UIKeyboard.FrameBeginUserInfoKey)).??
. . .
}
在 Xamarin 中,NSDictionary returns 一个 NSObject,但是 objective-c 版本 returns 一个 Id 对象。 NSObject 没有 CGRectValue 方法。
我的问题是 Xamarin 对 Id 对象做了什么以及我应该 class 转换什么以获得 CGRectValue。我试过投射到 UIView 但这没有帮助,除非我错过了什么。
我试过用谷歌搜索这个,但我只是在 iOSDevice Id 上得到了一堆点击。
编辑: 我还没有机会对此进行测试,但我想我找到了一种可能的方法。
var kbSize = ((UIView) info.ObjectForKey(UIKit.UIKeyboard.FrameBeginUserInfoKey)).Frame.Size;
我需要一段时间才能有机会测试从该 Id 返回的对象是否属于 UIView 类型。
在 Xamarin 中,您可以使用强类型通知,无需拆箱数据即可为您提供所需的一切。
查看示例:http://developer.xamarin.com/api/type/MonoTouch.UIKit.UIKeyboard/
在你的情况下,你想要 ObserveDidShow
而不是 ObserveDidChangeFrame
,但想法是一样的。
就是说,如果您仍想使用其他方法,则 ObjectForKey 调用产生的值是一个 NSValue,因此您要做的是将结果转换为 NSValue,然后使用 CGRectValue 属性.
更新:完整link到你想要的样本: