Обнаружение касания пальцем текста - PullRequest
1 голос
/ 08 мая 2009

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

Ответы [ 3 ]

0 голосов
/ 13 мая 2009

Я делаю это в текстовом редакторе iPhone, который я пишу. По нескольким причинам я создал подкласс UIView для рисования текста (вместо UITextView), и мне пришлось реализовать нечто подобное, чтобы обеспечить подвижный курсор, как в текстовом представлении. Я использовал шрифт фиксированной ширины (точнее, Courier), затем я взял координату x касания, разделил его на ширину символа и округлил ответ вниз. Это дает вам индекс персонажа.

Однако, если это возможно, найдите способ сделать это без рисования текста самостоятельно (если текст вводится пользователем или что-то иное, чем жестко закодированный), потому что Apple предоставляет много функциональности в своем классе UITextView, что является проблемой для копирования: редактирование, курсор, перенос слов, прокрутка и т. д.

Возможно, если вы не можете получить сенсорные события из подкласса UITextView, поместить прозрачный вид / слой поверх текста и получить сенсорные события из этого, тогда вам нужно только выяснить способ включить и выключить для редактирования.

Кайл

0 голосов
/ 29 июля 2009

Я придумал удобный трюк для этого. В drawRect имитируйте текст, который будет рисовать UITextView, но на самом деле не рисуйте текст. Установите шрифт Helvetica на 17 пунктов, и единственная сложная часть - обработка переноса слов. У вас уже есть текст для отображения, и вы можете получить размер каждого слова в этом шрифте по умолчанию, вызвав sizeWithFont. Затем сохраните прямоугольники для каждого слова, и когда пользователь коснется вида, найдите, какой из сохраненных прямоугольников содержит точку касания. Чтобы проверить и откалибровать геометрию (межстрочный интервал и т. Д.), Нарисуйте текст другим цветом. Когда вы получаете его так, что видите только один из цветов шрифта, вы получаете его идеально.

Я могу опубликовать свой код для этого, если кто-то захочет.

0 голосов
/ 08 мая 2009

Итак, это два вопроса.

Чтобы знать, куда указывает ваш палец в тексте, вам нужно знать, где UITextView разместил символы. Это не то, что UITextView задокументировано для поддержки, поэтому далее вы сами рисуете текст. Этот вопрос о стековом потоке при внедрении нестандартного шрифта содержит несколько ссылок и даже некоторый код, который поможет. Что вам нужно добавить, так это следить за продвижением символов, чтобы вы точно знали, где отображается каждый символ (или вы могли бы даже использовать другие основные графические функции для получения точных ограничительных рамок каждого символа).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...