首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否通过辅助功能接口从其他应用程序的文本字段中获取NSAttributedString?

是否通过辅助功能接口从其他应用程序的文本字段中获取NSAttributedString?
EN

Stack Overflow用户
提问于 2012-02-18 07:39:38
回答 1查看 1.1K关注 0票数 1

我的应用程序(完美用户仁慈)使用辅助功能app来抓取其他应用程序拥有的文本字段的内容。

我正在使用Apple提供的优秀的辅助功能检查器来获取帮助和灵感

https://developer.apple.com/library/mac/#documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTesting/OSXAXTestingApps.html

我已经包含了该项目的UIElementUtilities类,我可以使用它来执行以下操作:

代码语言:javascript
运行
复制
//Get focused App
AXUIElementRef frontMostApp;
frontMostApp = getFrontMostApp();

//Get focused UIElement (Such as a textfield)
AXUIElementRef focusedUIElement;
AXUIElementCopyAttributeValue(frontMostApp, kAXFocusedUIElementAttribute, (CFTypeRef *)&focusedUIElement);

NSString *textfieldContents = [UIElementUtilities descriptionForUIElement:focusedUIElement attribute:(NSString *)kAXValueAttribute beingVerbose:NO];
//descriptionForUIElement:attribute:beingVerbose uses `AXUIElementCopyAttributeValue`


NSLog(@"TEXT FIELD CONTENTS: %@", textfieldContents);

因此,我可以以纯文本NSString的形式获取kAXValueAttribute (也称为应用程序文本字段的文本内容)。

有没有办法做同样的事情,但是得到一个NSAttributedString?我需要提取当前在文本字段中使用的字体名称和字体大小。

最终目标是使用字体名称和字体大小来计算插入符号在文本字段中的位置。(给定字体名称/大小,我已经可以这样做了)。但如果有更好的方法来计算插入符号的位置,那将是一个更好的答案。在这种情况下,我不需要获取NSAttributedString。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-24 03:24:09

How to get global screen coordinates of currently selected text via Accessibility APIs.

此方法使用当前选定的文本来获取选定文本矩形的边界。比通过字体名称/大小计算位置要好得多。

棘手的部分是你不能得到一个空选择的边界(也就是一个纯文本插入点插入符号)。因此,您需要分解一个selection,然后将它传递给selection以计算边界矩形的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9336981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档