2014-11-20 4 views
1

У меня есть приписывали строку настройки следующим образом:Добавить UITapGestureRecognizer в NSAttributed Текст с диапазоном

var range = (showStr as NSString).rangeOfString(spellingStr) 
var attributedString = NSMutableAttributedString(string:showStr) 
attributedString.addAttribute(NSForegroundColorAttributeName, value: ezGreen, range: range) 

и я хотел бы добавить водопроводный жест только в диапазон, который я установил на зеленый.

Есть ли атрибут для прикосновений? Как бы я установил жест касания только для части spellingStr?

EDIT

весь мой код для этой метки и строки ниже:

var showStr:NSString = "Showing results for \(searchT)." 
println("SearchTerm:\(searchT)") 
showingLabel.textColor = .blackColor() 

var range = (showStr as NSString).rangeOfString(searchT) 
var attributedString = NSMutableAttributedString(string:showStr) 
attributedString.addAttribute(NSForegroundColorAttributeName, value: ezGreen , range: range) 

showingLabel.attributedText = attributedString 
showingLabel.font = UIFont.systemFontOfSize(17) 
showingLabel.numberOfLines = 0 
showingLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping 
var showHeight:CGFloat = heightForView(showingLabel.text!, UIFont.systemFontOfSize(17), maxLabelWidth) 
showingLabel.frame = CGRectMake(20, heightOfCor, maxLabelWidth, showHeight) 
heightOfCor += showHeight 
bgBlack.addSubview(showingLabel) 
+0

Это может заставить вас начать: http://stackoverflow.com/questions/18680724/how-can- i-detect-taps-on-the-specific-part-substring-of-a-uilabel – Glynbeard

+0

Это может быть полезно для вас http://stackoverflow.com/questions/1256887/clickable-links-in-uilabel – Alexi

+0

@ Glynbeard проблема с этим решением заключается в том, что я не хочу воссоздавать ярлык для щелчка, потому что строка может быть очень разной. – inVINCEable

ответ

4

Я сделал это, просто создавая UIButton и установить его в точном кадре, что строка текста.

Вот пример того, как сделать это в Objective-C:

NSRange range = [self.textView.text rangeOfString:@"The string of text you want to tap"]; 
self.textView.selectedRange = range; 
UITextRange *textRange = [self.textView selectedTextRange]; 
CGRect textRect = [self.textView firstRectForRange:textRange]; 
CGRect convertedRect = [self.view convertRect:textRect fromView:self.textView]; 

UIButton *button = [[UIButton alloc]initWithFrame:convertedRect]; 
[button setBackgroundColor:[UIColor clearColor]]; 
[button addTarget:self action:@selector(textTapped:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 
[self.view bringSubviewToFront:button]; 

Примечание: перед вызовом этого, вы должны уже настроили вашу приписываемое строку и добавить его в свой UITextView. Кроме того, убедитесь, что вы позволяете выбрать внутри вашего TextView (но отключить userInteraction, если вы не хотите блики и т.д.)

enter image description here

Смежные вопросы