2016-07-16 30 views
0

Ich bin mir bewusst, dass ich textView.dataDetectorTypes = UIDataDetectorTypeLink; zur automatischen Erkennung von Links tun kann.Überprüfen, ob UITextView URL (boolescher Wert) oder URL-Extraktion hat

Nun scheint dies einfach, aber ich kann keinen Weg finden zu überprüfen, ob der DataDetector UITextView tatsächlich eine Übereinstimmung gefunden hat.

Ich suche nach etwas wie BOOL hasLink = textView.hasLink; oder BOOL hasLink = textView.text.hasLink; oder vielleicht sogar eine Art und Weise einen Verweis auf die NSDataDetector ziehen (ich wahrscheinlich NSDataDetector Methoden verwenden, könnte zu überprüfen, aber ich würde bestätigen müssen, nur Ideen werfen)

Gibt es keine eingebaute Möglichkeit dies zu überprüfen oder muss ich es unabhängig bestätigen?

Edit:

So habe ich meine eigene NSDataDetector nur, dies zu tun, (Code unten), aber es bleibt die Frage, ob es wirklich keine Möglichkeit, einen erfassten Datentyp zu extrahieren oder Bestätigung der Existenz eines erfassten Datentyp in einer UITextView?

Dies ist, was ich verwendet, um mich zu überprüfen:

-(BOOL) doesTextHaveLink:(NSString *)text { 
    NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil]; 
    NSArray *matches = [linkDetector matchesInString:text options:0 range:NSMakeRange(0, [text length])]; 
    for (NSTextCheckingResult *match in matches) { 
     if ([match resultType] == NSTextCheckingTypeLink) { 
      return YES; 
     } 
    } 
    return NO; 
} 
+0

Sie whant Textview contane URL oder nicht zu überprüfen? –

Antwort

0

plz diesen Code verwenden diese Rückkehr ja, wenn Textview url hat

-(BOOL)checkUrl:(NSString *)strText{ 
    NSString *urlRegEx = 
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"; 
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:strText]; 
} 
+0

Ich denke, die Lösung, die ich unter dem Edit-Header veröffentlicht habe, ist wahrscheinlich eine sicherere Alternative dazu – gadu