如何自定义SDK的UIAlertController?

时间:2019-06-23 19:54:13

标签: ios objective-c swift

因此,我已经了解并可以创建自己的自定义Type '{ children: ReactNode; width: number | undefined; height: number | undefined; }' is not assignable to type 'IntrinsicAttributes & Pick<Pick<Pick<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "title" | "key" | "defaultChecked" | "defaultValue" | ... 246 more ... | "onTransitionEndCapture"> & { ...; }, "style" | ... 251 more ... | "onTransitionEndCapture"> & Partial<...>, "style" | ... 251 mor...'. Property 'width' does not exist on type 'IntrinsicAttributes & Pick<Pick<Pick<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "title" | "key" | "defaultChecked" | "defaultValue" | ... 246 more ... | "onTransitionEndCapture"> & { ...; }, "style" | ... 251 more ... | "onTransitionEndCapture"> & Partial<...>, "style" | ... 251 mor...'.ts(2322) (字体,背景颜色,文本颜色,色调颜色等)。所以这不是这里的问题。

我遇到的问题是:

当我使用SDK文件(例如Facebook的SDK)时,无法找到SDK的Objective-C标头中的默认UIAlertController位置(并显示了) 。如果可以的话,我想用我自己的自定义警报替换默认值。

截至目前,我已经使用静态函数创建了自定义类,该静态函数返回了自定义UIAlertController供我的VC使用。我也已经测试了实现,并且效果很好。

我首先尝试的是手动搜索Facebook SDK的Objective-C标头,以查找默认UIAlertController的发起和显示位置,但是运气不佳...

接下来我尝试使用Xcode的Find Navigator搜索“ AlertController”。 las,在SDK的头文件中找不到任何内容(也许我应该更改搜索范围?)。

我最后尝试做的只是搜索Google,但是我所能找到的只是关于如何创建自定义UIAlertController的教程(我已经知道该怎么做)。

尽管在目前的情况下,我正在使用Facebook的SDK。最佳答案应该是更笼统而不是具体的答案(如果可能)。这样,如果将来我使用其他/新的SDK,我仍然可以应用您的方法。谢谢。

1 个答案:

答案 0 :(得分:0)

我不建议编辑和分叉FB的SDK,这将是一个噩梦。

相反,您应该研究objc方法Swizzling,该方法可让您用自己的实现动态替换现有函数的主体。我相信您可以使用它来更改所有UIAlertControllers的行为(并非没有风险)。

https://nshipster.com/method-swizzling/