0

我是 iOS 开发的新手,这是我的问题。在我的应用程序中,我有一些冗长的文本要显示,但在这些文本中,我希望一些词被下划线和“活跃”。我所说的“活跃”是指我可以单击其中一个词来弹出定义或图片。

我想使用 UITextView 和 UILabel 这样我就使用 Textview 直到我得到一个活动单词(感谢连接到弹出窗口的标签),然后我再次使用 Textview。

如果我想要这个:bla bla bla bla ACTIVE bla bla bla bla ...

我会使用:TextView 标签 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 回答