将选择器添加到URL

时间:2013-07-24 11:20:11

标签: iphone ios

我正在使用TTTAttributedLabel添加指向标签部分的链接。 我想要链接来调用选择器(同一文件中的方法),而不是Web URL。

是否可能,以及如何?

3 个答案:

答案 0 :(得分:1)

您可以使用自己的网址方案创建链接,例如<a href="myScheme://mySelector1"UIWebView委托,只需抓住此重定向

NSString * const kMyURLScheme = @"myScheme";  
NSString * const kMySelector = @"mySelector1";


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navi
gationType:(UIWebViewNavigationType)navigationType {

 if ([[request.URL scheme] isEqualToString:kMyURLScheme]) {

     SEL mySel = NSSelectorFromString([URL host]); // Do something with @selector


     return NO; // remember to return NO to denie `UIWebView` execute your request
 }

答案 1 :(得分:0)

我使用了UILabel而不是TTTAttributedLabel。此代码也可以使用它:

[label addGestureRecognizer:singleTap];
[label setText:@"hello world i love iphone"];

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.view];

CGRect rect = label.frame;
CGRect newRect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width/2, rect.size.height);
CGRect newRect2 = CGRectMake(rect.origin.x+rect.size.width/2, rect.origin.y, rect.size.width/2, rect.size.height);

if (CGRectContainsPoint(newRect, touchPoint)) {
    [self performSelector:@selector(printMessage:) withObject:@"First half of label touched"];
}
else if (CGRectContainsPoint(newRect2, touchPoint)) {
    [self performSelector:@selector(printMessage:) withObject:@"Second half of label touched"];
}
}

-(void) printMessage:(NSString *)message
{
NSLog(@"%@",message);
}

答案 2 :(得分:0)

我需要做的就是在delegateTTTAttributedLabel方法的didSelectLink方法中添加行为。