gpt4 book ai didi

c# - Xamarin 哪里是 Id 对象

转载 作者:行者123 更新时间:2023-11-29 12:13:50 24 4
gpt4 key购买 nike

我正在将 objective-c 代码翻译成 Xamarion.iOS。

在 objective-c 中,我有以下代码。

- (void)keyboardWasShown: (NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboadFrameBeginUserInfoKey] CGRectValue].size;
. . .
}

问题是 info objectForKey 返回一个 Id 对象,该对象具有 CGRectValue 方法。

但是在 Xamarin 中我有...

private void KeyboardWasShown(NSNotification notification)
{
var info = notification.UserInfo;
var kbSize = (info.ObjectForKey(UIKit.UIKeyboard.FrameBeginUserInfoKey)).??
. . .
}

在 Xamarin 中,NSDictionary 返回一个 NSObject,但 objective-c 版本返回一个 Id Object。 NSObject 没有 CGRectValue 方法。

我的问题是 Xamarin 对 Id 对象做了什么,我应该转换哪个类来获取 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 属性。

更新:您想要的示例的完整链接:

http://developer.xamarin.com/api/member/MonoTouch.UIKit.UIKeyboard+Notifications.ObserveDidShow(System.EventHandler%7BMonoTouch.UIKit.UIKeyboardEventArgs%7D)/

关于c# - Xamarin 哪里是 Id 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32486561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com