我正试图创建一个 UIAccessibilityCustomAction
在Xamarin.iOS.Net中。本方法需要 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 - MSFT的提示,我找到了另一个实例化方法,似乎更容易处理,只使用 name, actionHandler
所以,如果没有 target
和 selector
. actionHandler
更容易使用,因为它只是一个需要返回类型为bool的函数。
我的实现。
UIAccessibilityCustomAction up = new UIAccessibilityCustomAction("Increment", actionHandler: Increment);
private bool Increment(UIAccessibilityCustomAction customAction)
{
//implementation of the handler
}