0

私はiOS開発の初心者であり、ここに私の問題があります。私のアプリでは、表示する長いテキストがいくつかありますが、それらのテキストでは、いくつかの単語に下線を付けて「アクティブ」にしたいと考えています。「アクティブ」とは、これらの単語のいずれかをクリックして、定義または画像をポップアップ表示できることを意味します。

UITextView と UILabel を使用して、アクティブな単語 (ポップアップに接続されたラベルのおかげで表示されます) を取得するまで Textview を使用してから、Textview を再度使用することを考えました。

これが欲しいなら: bla bla bla bla ACTIVE bla bla bla bla ...

私は使用します: TextView Label TextView ...

それに加えて、これを行う方法がわかりません。これはかなり悪い方法だと思います。

私のテキストと単語は XML ファイルでなければならず、使用するのに最適な構造について確信が持てません...

4

1 に答える 1

0

UITextView を使用してこの機能を実装したい場合は、それほど難しくありません。この種のものを実装するには、何らかのロジックが必要です。これについていくつかのアイデアがあります。

下線付きの単語が必要な場合は 、選択した単語の四角形から線を引きます。

UITextViewから選択した単語を取得するには、

-(void)textViewDidChangeSelection:(UITextView *)textView
{
    @try
    {
        NSLog(@"%@",[textView.text substringWithRange:textView.selectedRange]);
    }
    @catch (NSException *exception)
    {

    }
}

その位置からポップアップを表示するには、UITextView の Delegate メソッド- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)textを再度使用し、その下でカーソル位置を取得し、その場所からポップアップを表示します。このようなもの。

AutoCompleteView *autoCompleteView = [[AutoCompleteView alloc] initWithContent:suggestions forText:text];
autoCompleteView.delegate = self;
CGPoint cursorPosition = [textView caretRectForPosition:textView.selectedTextRange.start].origin;
CGRect frame = CGRectMake(cursorPosition.x, cursorPosition.y+30, 150, 100);
popoverController = [[WEPopoverController alloc] initWithContentViewController:autoCompleteView];
popoverController.delegate = self;
[popoverController presentPopoverFromRect:frame inView:commentView  permittedArrowDirections:(UIPopoverArrowDirectionUp) animated:YES];

あなたの要件について少し考えていただければ幸いです。

于 2013-02-06T04:57:29.883 に答える