#iphone #objective-c #ios #hyperlink #uilabel
#iPhone #objective-c #iOS #гиперссылка #uilabel
Вопрос:
Я нашел довольно много материала по этой теме. Я просто хочу, чтобы ссылки, которые появляются в моей метке, автоматически определялись как ссылки и гиперссылки. Я просмотрел проект three20 TTtwitter, но он выглядит действительно сложным, и я не знаю, с чего начать его интеграцию.
Кто-нибудь знает, можно ли это сделать простым способом, или кто-нибудь может попытаться объяснить мне?
Заранее спасибо!
Ответ №1:
Предложит вам использовать UIWebView
Используйте приведенное ниже свойство UIWebView
для обнаружения ссылки..
@property(nonatomic) UIDataDetectorTypes dataDetectorTypes
Комментарии:
1. Но текст, который у меня сейчас есть, загружен в Label, могу ли я установить все свойства точно так же, как label? Например, количество строк.
2. Кстати, я работаю с TableView с пользовательской ячейкой. В этих пользовательских ячейках есть метки. Должен ли я просто изменить его с UILabel на UIWebView?
3. @peter: Да, вам нужно перейти с UILabel на UIWebView
4. Я пытался изменить это, но это действует не так, как мне нужно. Ссылка открывается в том же uiwebview, и поскольку это вложенный просмотр ячейки табличного представления, это работает неправильно. Кроме того, я могу щелкнуть по ссылке только при включенном пользовательском взаимодействии. Поскольку я использую это для расширения и втягивания ячейки, с этим возникают некоторые проблемы.
Ответ №2:
Вы не можете подчеркивать текст в UILabels или UIButtons. Вот что я сделал в аналогичной ситуации.
Я хотел иметь подчеркнутый текст в представлении, которое выглядело бы как ссылка, но мне не нужна была функциональность UIWebView, и мне нужна была стандартная функциональность UIControl target / action. То, что я сделал, работает, только если у вас есть одна строка текста, которую вы хотите отобразить и которая должна выглядеть как ссылка. Используйте это так же, как и стандартную UIButton. Вы должны создать с типом = UIButtonTypeCustom.
Я создал подкласс UIButton, который поддерживает подчеркивание одной строки текста путем переопределения drawRect
. Я добавил BOOL _titleLabelUnderlined
iVar в подкласс.
xButton.m
- (void)drawRect:(CGRect)rect
{
// just in case...
[super drawRect];
if (_titleLabelUnderlined) {
CGContextRef context = UIGraphicsGetCurrentContext();
// determine the size of the titleLabel text based on the font
CGSize textSize =[self.titleLabel.text sizeWithFont:self.titleLabel.font
forWidth:self.bounds.size.width
lineBreakMode:UILineBreakModeTailTruncation];
// set the underline color
CGContextSetStrokeColorWithColor(context, self.currentTitleColor.CGColor);
// line width
CGContextSetLineWidth(context, 1.0f);
// calc the start and end points for the line
CGFloat minX = self.titleLabel.center.x - textSize.width/2.0f;
CGFloat maxX = self.titleLabel.center.x textSize.width/2.0f;
// start the line
CGContextMoveToPoint(context, minX, CGRectGetMinY(self.titleLabel.frame) CGRectGetHeight(self.titleLabel.frame) 1.0f);
// draw the line to the end point
CGContextAddLineToPoint(context, maxX, CGRectGetMinY(self.titleLabel.frame) CGRectGetHeight(self.titleLabel.frame) 1.0f);
// commit the drawing
CGContextStrokePath(context);
}
}