Ipad dev:在 UITextview 中弹出单词
Posted
技术标签:
【中文标题】Ipad dev:在 UITextview 中弹出单词【英文标题】:Ipad dev : Popup on word in an UITextview 【发布时间】:2013-01-31 14:08:25 【问题描述】:我是 ios 开发新手,这是我的问题。 在我的应用程序中,我有一些冗长的文本要显示,但在这些文本中,我希望一些词被下划线和“活跃”。 我所说的“活跃”是指我可以点击其中一个词来弹出定义或图片。
我想使用 UITextView 和 UILabel 这样我就使用 Textview 直到我得到一个活动单词(感谢连接到弹出窗口的标签,我显示出来)然后我再次使用 Textview。
如果我想要这个: bla bla bla bla 活跃的 bla bla bla bla ...
我会使用: TextView 标签 TextView ...
除此之外,我不知道该怎么做,而且我意识到这是一种非常糟糕的做法。
我的文本和文字必须在 XML 文件中,我不确定要使用的最佳结构...
【问题讨论】:
您在哪一部分遇到了麻烦?你似乎暗示你已经完成了文本解析,但最后你似乎在问如何做那部分。你有没有想过在 UIWebView 中的 html 中做这一切?然后你可以有超链接而不是 UILabels 并且文本的解析和选择几乎是内置的。 我还没有完成解析。这只是一个想法。我去看看UIWebView,好像不错!正如我所说,我是 iOS 开发新手,我什至不知道 UIWebView ;) 【参考方案1】:如果您想使用 UITextView 实现此功能,那么这并不难。必须有一些逻辑来实现这种事情。这里有一些想法。
如果你想要带下划线的单词,draw-line 来自所选单词的矩形。
用于从 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];
希望您对自己的要求有所了解。
【讨论】:
以上是关于Ipad dev:在 UITextview 中弹出单词的主要内容,如果未能解决你的问题,请参考以下文章
iPad 上带有 UITextView 的 InputAccessoryView
iPad 上的 UIModalPresentationFormSheet。键盘出现时如何调整UITextView的高度