0

我正在开发一个适用于触控板输入的 iPadOS 13.4 应用程序。我已经完成了很多工作,例如两指滚动、右键单击(两指或控制单击)、双指缩放等。我还有另一个控件可以很好地与触控板配合使用,但它是自定义文本控件,因此我需要使用UIPointerInteraction API将圆形光标从圆形更改为 I 形。

我修改了 Apple 提供的Swift 示例代码项目,并在视图上显示了 I-beam,因此我知道如果系统调用我的styleFor: region方法该怎么做,但它不会调用它。Xamarin API 尚未为此记录;最好的是 Assembly Browser 和这里提到方法签名的 API 差异。我在 Xamarin.iOS 13.16.1 上。

public class MyClass: UIView, IUIPointerInteractionDelegate {

    ...

    initalization_code() {
        ...
        UIPointerInteraction interaction = new UIPointerInteraction(this);
        this.AddInteraction(interaction);
    }

    public UIPointerStyle GetStyleForRegion(UIPointerInteraction interaction, UIPointerRegion region) {
        // this code is never called
        const float HEIGHT = 30f;
        return UIPointerStyle.Create(UIPointerShape.CreateBeam((nfloat)HEIGHT, UIAxis.Vertical), UIAxis.Vertical);
    }
}

我需要做什么才能让 iOS 调用 GetStyleForRegion 的 C# 代码?

4

1 回答 1

0

添加此导出注释完成了这项工作:

[Export("pointerInteraction:styleForRegion:")]
public UIPointerStyle GetStyleForRegion(UIPointerInteraction interaction, UIPointerRegion region) {
    // this code gets called now!
    const float HEIGHT = 30f;
    return UIPointerStyle.Create(UIPointerShape.CreateBeam((nfloat)HEIGHT, UIAxis.Vertical), UIAxis.Vertical);
}

现在调用该方法。

于 2020-05-17T23:26:33.273 回答