2009-08-20 2 views
2

Ich bin eine Wörterbuch-Lookup-Anwendung erstellen. Der Benutzer wählt ein Wort aus einem UITableView aus, und die App zeigt die Definition an. In einigen Fällen ähnelt das Wort einem anderen Wort, daher möchte ich "Siehe auch:" anzeigen, gefolgt von einer Liste ähnlicher Wörter, die bei Berührung eine andere Definition anzeigen.Der beste Ansatz für eine einfache Verknüpfung in UITextView

Bei der Suche hier auf Links in UITextViews, die meisten Antworten beziehen sich auf das Internet, das ist nicht wirklich das, was ich brauche. Ich möchte einfach die Kontrolle übernehmen, wenn der Benutzer ein Wort berührt, damit ich die Ansicht ändern kann.

Ist UIWebView die einzige Möglichkeit, dies zu tun, oder habe ich etwas übersehen, das im SDK offensichtlich ist? Außerdem würde ich lieber im nativen SDK bleiben und nicht die Three20-Route gehen.

Danke!

Antwort

2

Ich würde eine andere UITableView verwenden, um diese Arbeit zu machen. Ihre Liste der ähnlichen Wörter wird wahrscheinlich in NSArray Format bereits sein, so dass es ziemlich einfach wäre, ein anderes UITableView anstelle von UITextView einzurichten, um die Liste anzuzeigen, und vorausgesetzt, dass Sie diesen Code bereits für das Haupt UITableView haben, wissen Sie bereits wie man sie anklickbar macht!

+0

Excellent! Das Offensichtliche scheint mir immer zu entkommen. Vielen Dank! – skantner

2

Ein UIWebView wird die einzige Sache sein, die hier passt, fürchte ich. Daten-Detektoren sind die einzige Möglichkeit, innerhalb einer UITextView zu verbinden, und sie werden nur an die entsprechenden Datentypen (Telefonnummer, Webseite, Adresse) reagieren ...

Verbindungen können die normale Art und Weise erfolgen:

<a href='http://someotherword'>someotherword</a> 

-Setup die webviewdelegate alle Link-Anfragen verhaken (und zu verhindern, dass sie im Browser geöffnet wird), so dass Sie sie in Ihrem eigenen Handler öffnen:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
{ 
    if(navigationType == UIWebViewNavigationTypeOther) return YES; // Allow direct loading 

    NSString *myWord = [[request URL] host]; 
    // do something with myWord... say open another word 
    return NO; // Don't let the browser actually perform this navigation 
}