Как я могу обнаружить ответвления на определенной части (подстроке) UILabel?

Я новичок в разработке iOS. Я не знаю, были ли заданы эти вопросы уже или нет, Я попытался найти решение в stackoverflow, но не получил никаких результатов.

Вопрос:

У меня есть UILabel, называемый myLabel с текстом: "Нажмите здесь, чтобы продолжить"

Теперь проблема заключается в том, что я хочу выполнить действие, когда пользователь удаляет только "Click".

Я знаю, как использовать UITapGestureRecognizer, но он отвечает на все UILabel. Можно ли просто определить, когда пользователь удаляет только строку "Click"?

Ответ 1

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

Что вы можете сделать, так это сначала получить местоположение щелчка, используя:

CGPoint location = [gesture locationInView:gesture.view];

Это определяет расположение жестов в вашем представлении.

Как только вы это сделаете, вы можете иметь размер слова "Click" жестко запрограммированный или вы можете создать идентичную метку для своей метки жестов, чтобы получить размер, например:

UILabel *sizeLabel = //create label with same font.
[sizeLabel setText:@"Click"];
float width = [sizeLabel sizeThatFits:CGSizeMake(MAXFLOAT,MAXFLOAT)].width;

Вы также можете сделать это при создании фактической метки и сохранить эту ширину в статической переменной, чтобы вам нужно было сделать это один раз, и вам не нужно создавать дополнительную метку (т.е. установить текст вашей реальной метки на @ "Click", получить ширину, а затем установить ее в реальном тексте).

Как только у вас будет ширина, вы и местоположение крана, вы можете проверить, было ли использовано слово "Click", сравнивая:

if (location.x < width) {
    //Put your tap code in here.
}