我正在将SiriKit用于付款域,当用户说"将10美元发送给Ronoldo "时,会显示我的自定义用户界面。
虽然我的自定义视图中只有一个标签,但SiriKit显示的是IntentsUI,因为它有三个相同的标签,如下图所示。
我认为我的观点重复了3次。你能帮忙吗?
答案 0 :(得分:1)
最后我解决了这个问题。我的自定义Siri UI符合INUIHostedViewControlling协议,它定义了 configureView 函数来提供自定义界面。对于我的视图控制器,每个参数都会多次调用,我检查了正确的参数并仅返回控制器的视图大小一次。
希望这有助于某人。
func configureView(for parameters: Set<INParameter>, of interaction: INInteraction, interactiveBehavior: INUIInteractiveBehavior, context: INUIHostedViewContext, completion: @escaping (Bool, Set<INParameter>, CGSize) -> Void) {
//.... other codes....
if (parameters.count > 0) {
let startIntentDescriptionParameter = INParameter(for: INSendPaymentIntent.self,
keyPath: "currencyAmount")
if parameters.contains(startIntentDescriptionParameter) {
return completion(true, parameters, self.desiredSize)
}
}
return completion(false, parameters, CGSize.zero)
}
答案 1 :(得分:0)
我在我的一个项目中遇到了同样的问题。我使用了以下方法而不是configureView函数来提供自定义界面。
func configure(with interaction: INInteraction!, context: INUIHostedViewContext, completion: ((CGSize) -> Void)!) {
// your code....
completion(self.desiredSize)
}
并且通过使用这种方法我的问题得到了解决,我希望它也适用于你。