Кастомные события в UITextView


#1

Я хочу реализовать в своем приложении функцию, которую я видел в приложении Noted. При записи звука каждое нажатие клавиши Enter в UITextView создает временную метку, которая впоследствии может быть использована для перехода к точному месту записанного звука.

Как это можно сделать? Может быть, я могу использовать какую-то внешнюю библиотеку для расширения функциональности UITextView?

Перенос строки можно реализовать следующим образом:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if (text == "\n") {
       performAction()
    }

func performAction() {
    print("Action!")
}

Но как тогда я могу использовать target-action пометки времени для совершения действия в textView?


#2

У плеера можно ведь вытащить текущий таймлайн. это и будет ваша временная метка.
Создаете массив, который будет ранить временную метку и текст к ней.
При прокрутке слайдера, отлавливайте через делегат на какое время он был сдвинут, ищите нужную запись в массиве, получайте индекс и скрольте таблицу (я так предполагаю что это в таблицу сделано).

Глянул еще раз запись. там метка вытаскивается в момент печати, а не нажатия на Enter.


#3

То есть вы думаете, что это все-таки таблица, а не textview?


#4

Это сразу видно
Еще нужно ограничить нажатие на другие ячейки пока идет запись ( Fatal error )


#5

Ну я не особо много изучал все возможности textview, поэтому предположил, т.к. я бы это делал через таблицу, мне так было бы проще. С таблицей мне больше известно что она умеет и как работает.
Ну а вся остальная логика это уже не сильно сложная вещь. Там уже будет идти работа с делегатами в основном.

По поводу комментария @Psilc, я думаю что ячейки добавляются динамически, как раз во время нажатия Enter. Если он это имел в виду.
Либо, если он про нажатие на предыдущие ячейки, тогда да, с его логикой я согласен.