Как получить значение Range текста в UITextView из повернутого местоположения?
У меня есть UITextView
с некоторым содержанием текста. Мне нужно получить точное значение диапазона символа / строки из повернутого местоположения. Я поставил TapGestureRecognizer
для UITextView. В его методе действия мне нужно получить диапазон повернутого местоположения. Как это возможно? Я протестировал некоторые ответы от Stackru, но они не были идеальными. Заранее спасибо.
1 ответ
Вы смотрели на UITextView
документация?
Вы можете использовать это selectedRange
метод определения диапазона текста, выбранного пользователем.
Позднее редактирование: это было только недавно отклонено, и дало мне возможность перечитать мой ответ, и я также понизил свой ответ с 3 года назад также.
Обновленный ответ:
Если есть одно касание, само действие касания должно иметь необходимую информацию. По сути, вам понадобятся сами события UITouch, например, чтобы вычислить, где произошло касание относительно того, где должен быть ваш текст. Это позволит вам узнать, какая часть текста была покрыта пальцем пользователя.
Я, честно говоря, не уверен, что для этого существуют какие-либо сторонние решения, но я бы поспорил, что https://cocoapods.org/ было бы хорошим началом для ключевых слов UITextView tap
если не сам Github с ключевыми словами: cocoapod uitextview
,
Если бы я реализовывал такое решение, используя события UITouch, используя свойства, описанные в документах, которые я бы использовал The location of the touch within the view or window
дано классом.
Манипулируя с одной стороны CGPoints
от: https://developer.apple.com/documentation/uikit/uitouch/1618116-location, затем вы можете использовать механизмы String для определения размера текста в данном шрифте.
Хотя это решение для UILabel
, это может либо:
(а) использоваться по-другому, но, надеюсь, совершенно аналогично в UITextView
ИЛИ ЖЕ
(б) я видел манекена UILabel
привыкнуть просто для расчета размеров текста в объектах, требующих такого рода точности. Это обычно довольно эффективно, так как изменение строки UILabel
не дорого и UILabel
имеет встроенные свойства для расчета размера на основе текста и шрифта без необходимости проходить макет.
Опять же, извинения, если первый первоначальный ответ показался нахальным, я вижу это сейчас. Я подтверждаю, однако, что мой первоначальный ответ остается в силе (selectedRange
механизм) ДОЛЖЕН быть желаемое решение с точки зрения длительного нажатия. Для индивидуального решения, основанного на одном событии касания, однако, сбор UITouch
события через обратный вызов делегата, а затем обрабатывать тех, кто знает, что String
присутствует - это лучший подход из того, что я могу сказать.