如何检查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#中如何做到这一点?或者存在哪些其他方式来检查UIAlertControllerUISearchController。。。等等。

如何检查Xamarin iOS中是否存在某个方法/类/API

这样做:

using MonoTouch.ObjCRuntime;
bool hasUIAlertController = Class.GetHandle ("UIAlertController") != IntPtr.Zero;
if (hasUIAlertController) {
    // iOS 8
} else {
    // iOS 7 or lower
}