2013-09-08 1 views
12

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

Вопрос:

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

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

Я знаю, как использовать UITapGestureRecognizer, но он отвечает всем UILabel. Можно ли просто определить, когда пользователь нажимает только на строку «Щелчок»?

+2

Вы также можете найти некоторые потенциально полезные ответы в [это близко (если не дублировать) вопрос] (http://stackoverflow.com/questions/1256887/clickable-links-in-uilabel). –

ответ

5

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

Что вы могли бы сделать, это сначала получить расположение мыши с помощью:

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

Это получает расположение жест с вашей точки зрения.

После того как вы это, вы можете иметь размер слова «Нажмите» жестко закодировано или вы можете создать идентичную метку наклейку жеста, чтобы получить размер, такие как:

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

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

После того, как вы иметь ширину, вы и расположение крана, вы можете проверить, если слово «Нажмите» выявлялся путем сравнения:

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

спасибо ... Я попробую это .. –

+0

У меня есть [полный пример в моем ответе здесь] (http://stackoverflow.com/a/29352519/168594), где показано, как это сделать с помощью 'UILabel',' UITapGestureRecognizer 'и' NSAttributedString' - не требуется никакого подкласса. – zekel