Трекпад iPadOS 13.4 Метод IUIPointerInteractionDelegate GetStyleForRegion не вызывается

Я работаю над приложением iPadOS 13.4, которое работает с вводом с трекпада. У меня много чего работает, например, прокрутка двумя пальцами, щелчок правой кнопкой (два пальца или нажатие клавиши Control), масштабирование пальцем и т. Д. У меня есть еще один элемент управления, который отлично работает с трекпадом, но это настраиваемый текстовый элемент управления, поэтому мне нужно изменить круглый курсор с круга на двутавровую балку с помощью API-интерфейсов UIPointerInteraction.

Я изменил предоставленный Apple проект образца кода Swift и получил двутавровую балку для отображения над представлением, поэтому я знаю, что делать, если система вызовет мой метод styleFor: region, но он просто не вызовет его. API-интерфейсы Xamarin для этого еще не задокументированы; лучшее Браузер Ассамблеи и 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 вызывала мой код C# для GetStyleForRegion?

1 ответ

Добавление этой аннотации экспорта выполнило свою работу:

[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);
}

Теперь метод вызван.

Другие вопросы по тегам