Xamarin.iOS中的iOS选择器



我正试图在Xamarin.iOS中创建一个UIAccessibilityCustomAction。此方法需要name, target, selector作为参数(如您所见(。问题出在selector参数上。

在Xcode(使用Swift(中,我可以很容易地实现它,如下所示:

let up = UIAccessibilityCustomAction(name: "Increment", target: self, selector: #selector(increment))

@objc private func increment() -> Bool{
//selector implementation
}

在Xamarin(使用C#(中,我尝试过:

UIAccessibilityCustomAction up = new UIAccessibilityCustomAction(name: "Increment", target: iospage, selector: new Selector("Increment"));

可以说Selector既可以取String也可以取IntPtr作为自变量。由于我不知道IntPtr是什么以及应该如何使用它,我尝试使用String参数,正如您在上面看到的那样,我尝试按照这个答案实现这样的选择器。

[Export("Increment")]
private void Increment()
{
//selector implementation
}

问题是,这个方法似乎从未被调用过(当调用UIAccessibilityCustomAction时,我试图让它记录一些东西,但没有显示日志(,可能是因为这是错误的实现方式

知道吗?

感谢

UIAccessibilityCustomAction有另一个实例化方法,您可以将自定义操作传递给它。

UIAccessibilityCustomAction c = new UIAccessibilityCustomAction("Increment", 
(UIAccessibilityCustomAction customAction) =>
{
//selector implementation
});

多亏了@Cole Xia-MFT的提示,我发现了另一个似乎更容易处理的实例化方法,只使用name, actionHandler,因此没有targetselectoractionHandler更容易使用,因为它只是一个需要布尔返回类型的函数。

我的实现:

UIAccessibilityCustomAction up = new UIAccessibilityCustomAction("Increment", actionHandler: Increment);
private bool Increment(UIAccessibilityCustomAction customAction)
{
//implementation of the handler
}

最新更新