0

私は自分のアプリに次のようなものを表示しようとしています:

@ user1、@ user2、その他3つが高く評価されています。

多くのアプリは、投稿者やコメントなどのコメントにこの形式を使用しています。例:@me yeah apples is good

名前をタップすると、アプリのどこかに移動します。

@ user1 @ user2とその他3つをクリック可能にして、セレクターを実行したいと思います。

また、大胆で一定の色にしたいと思います。

UIWebViewテキストを定型化することはできますが、属性付き文字列の一部に触れることでセレクターを実行できますか?

私は、ラベルやボタンを作成せずに、次のように各ユーザー名の長さで動的に計算することなく、これを行うための最良の方法を見つけようとしています。

Label  = "Liked by "
Button = "@user1"

Label ", "
Button = "@user2"

Label "and "
Button "3 more"

Label "."

より良い方法があるに違いありません!前もって感謝します。

4

2 に答える 2

2

インラインUIWebViewを使用した方がよいでしょう。ただし、これをスクロールビューに追加する必要はありません。Webビュー内のアクション/リンククリックを検出するには、それらのデリゲートを登録し、リンクURLとして偽のプロトコル/URLを指定します。このようなもの:

UIWebView *wv = [[UIWebView alloc] initWithFrame:aFrame];
wv.delegate = self;
[wv loadHTMLString:@"<a href='userlike:user1'>@user1</a> hates this." baseURL:nil ]; // further parts of this method name omitted
// because it's long, look it up in UIWebView class reference.
[self.view addSubview:vw];
[wv release];

そしてデリゲートメソッド:

- (BOOL)webView:(UIWebView *)wv shouldStartLoadWithRequest:(NSURLRequest *)rq navigationType:(UIWebViewNavigationType)type
{
    if ([[[rq URL] protocol] isEqualToString:@"userlike"])
    {
        NSString *userName = [[rq URL] host];
        // extract username from the URL, then
        return NO;
    }

    // else
    return YES;
}

編集:私はこれを見つけまし、まさにあなたが探しているものです。(結局のところ、@ reganもまったく同じことを提案しました。)

于 2012-07-23T20:28:42.087 に答える
1

HTMLコードからセレクターを呼び出すことができます。たとえば、ここここを参照してください。

于 2012-07-23T20:27:51.673 に答える