我有一个动态生成的文本块。它大约有两句话左右长,两句话中的一些单词就可以触发一个事件。例如,如果我有"奶牛跳过月亮",我想让"奶牛"可以悬停在上面并弹出一些东西。玩了TextField
一些后,似乎是不可能做到这一点。是否有可能使用其他结构(或黑客)?如果有,怎么做?
是可以做到的:
-
使用
getCharIndexAtPoint
获取光标 下字符的索引 从这个索引开始,展开(检查字符的左右,并在遇到分隔符(空格、逗号等)时停止)以得到下面的单词光标
最后根据你找到的单词显示你的消息
下面是一些示例代码。我没有检查它是否编译,但这应该给你一个大致的概念:
var fullText = textField.text;
var index = textField.getCharIndexAtPoint(cursorLoc);
var delimiters = " nrt,?;!"; // Add a full list of delimiters here
var left = "";
var right = "";
for (var i = index - 1; i >= 0; i--) {
var c = fullText.charAt(i);
if (delimiters.indexOf(c) >= 0) break;
left = c + left;
}
for (var i = index + 1; i < fullText.length; i++) {
var c = fullText.charAt(i);
if (delimiters.indexOf(c) >= 0) break;
right = right + c;
}
var word = left + fullText.charAt(index) + right;