Трекпад 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);
}
Теперь метод вызван.