如何检查Xamarin iOS中是否存在某个方法/类/API
本文关键字:存在 方法 是否 API 何检查 检查 iOS Xamarin | 更新日期: 2023-09-27 18:26:05
在iOS 6&7兼容性提示建议检查特定的API,如此
public static bool IsiOS7 {
get { return UIDevice.CurrentDevice.CheckSystemVersion (7, 0); }
}
if(Util.IsiOS7) {
//Call iOS 7 API
} else {
//Call iOS 6.1 or earlier API
}
iOS 8也是如此。现在我读到,您应该检查某个方法或类是否存在,而不是版本检查。RespondsToSelector
进来了,应该是这个
if (RespondsToSelector(new Selector("edgesForExtendedLayout")))
EdgesForExtendedLayout = UIRectEdge.None;
但是,如何检查是否存在像UIAlertController
这样的整个类呢?Objective-C中没有类似的NSClassFromString
。我在Objective-C 中也看到了类似的内容
if ([UIAlertController class]){
// ...
}
像这样的东西能起作用吗?
Type type=Type.GetType("UIAlertController");
if(type!=null)
{
// iOS 8 API
}else{
// iOS 7 or lower
}
在C#中如何做到这一点?或者存在哪些其他方式来检查UIAlertController
、UISearchController
。。。等等。
这样做:
using MonoTouch.ObjCRuntime;
bool hasUIAlertController = Class.GetHandle ("UIAlertController") != IntPtr.Zero;
if (hasUIAlertController) {
// iOS 8
} else {
// iOS 7 or lower
}