NativeScript - Как получить позицию курсора TextView в iOS

Я использую NativeScript-Vue, и у меня проблема с определением позиции курсора TextView в iOS

<StackLayout>
    <TextView ref="input" editable=true @loaded="getView"/>
</StackLayout>

...

getView(args) {
    console.log(args.object.ios)      // return {}
    console.log(this.$refs.input.ios) // return {}
}

...

https://discourse.nativescript.org/t/getting-cursor-position-of-textview-in-ios/5931

Я прочитал решение выше, но похоже, что поддерживается только TypeScript?

То, что я получаю от this.$refs.input.nativeView.ios, всегда {} (пусто)

Кто-нибудь знает, что я пропустил? Или приветствуется любой доступный подход! Ваше здоровье


person vann_goh    schedule 26.10.2018    source источник


Ответы (2)


Вы должны использовать только this.$refs.input.nativeView.ios, он может печатать пустой объект, поскольку это собственный компонент.

person Manoj    schedule 26.10.2018
comment
Спасибо за ответ, но извините, @Manoj, я не совсем понимаю, что вы имеете в виду, так как я могу получить beginningOfDocument? Я сделал console.log(this.$refs.input.nativeView.ios.beginningOfDocument, а также вернул пустой объект, это нормально, поскольку это нативный компонент? - person vann_goh; 26.10.2018
comment
Вы можете выгрузить только все доступные свойства или методы объекта JavaScript в консоли, собственные объекты нельзя обрабатывать так же, как они собираются возвращать только пустой объект, но все равно должны работать. Вот рабочий образец - play.nativescript.org/?template=play-vue&id= q1LnDV Если вы используете TypeScript, вы можете использовать tns-platform-declrations пакет, который поможет вам перечислить все доступные собственные методы для собственных объектов. - person Manoj; 26.10.2018

Я создал функцию, которая позволяет мне получить выделенный текст. С помощью этой функции вы также можете определить, где находится ваша позиция курсора.

function getSelectedText(view) {
  let selection = {
    start: view.ios.selectedRange.location,
    end: view.ios.selectedRange.location + view.ios.selectedRange.length,
    length: view.ios.selectedRange.length
  }
  
  return selection;
}

Чтобы использовать эту функцию, просто получите ссылку на свое текстовое поле:

getSelectedText(this.$refs.textField.nativeView);
person Mennolp    schedule 30.11.2020