【问题标题】:Getting the text displayed on the screen of iPhone/ iPad获取 iPhone/iPad 屏幕上显示的文本
【发布时间】:2011-09-14 15:13:06
【问题描述】:

我想知道是否可以截取 iPhone 或 iPad 屏幕上显示的所有文本。我们希望收集移动设备上使用的所有常用措辞。 如果有人可以提供帮助,请告诉我。

【问题讨论】:

    标签: iphone ios ipad text screen


    【解决方案1】:

    不,这是不可能的。 iOS 中绘制文本的方式主要有两种,WebKit 和 Core Text。您需要劫持这些调用(在 WebKit 的情况下,劫持其内部数据结构)。即使在您自己的程序中(更不用说尝试在系统级别进行),也没有实际的方法来攻击它。我什至不相信有一种实用的方法可以在越狱设备上攻击它。

    我很难想象这些信息的实际用例,但如果它足够有价值,我会雇人手动截屏并进行 OCR。

    【讨论】:

      【解决方案2】:

      我不确定我是否理解您的问题。您的意思是每个应用程序上显示的文本? 答案是否定的。

      如果您想读取您自己的应用程序中的每个UILabel 文本,您可以递归地遍历视图层次结构并检测每个UILabel。示例:

      - (void)printLabelTextsRecursive:(UIView *)view {
          if ([view isKindOfClass:[UILabel class]]) {
              NSLog(@"Label: %@", ((UILabel *)(view)).text)
          } else {
              for (UIView *subView in view.subViews) {
                  [self printLabelTextsRecursive:subView];
              }
          }
      }
      

      并在AppDelegate 类中使用您的UIWindow 调用它,例如:

      [self printLabelTextsRecursive:self.window];
      

      【讨论】:

        【解决方案3】:

        好吧,对于未越狱的 iphone,没有办法做到这一点,因为每个应用程序都是在自己的沙盒中启动的。应用无法相互通信。

        对于越狱的 iphone,可能有办法。想想苹果的配音——它会读取用户触摸的所有内容。所以必须有办法。什么可以帮助你:

        • http://chrisalvares.com/blog/?p=7(关于如何在越狱的 iphone 上创建守护进程的指南)
        • 看看ios的私有框架——有一些以“screenreader”开头的。您可以使用 class-dump-z 查看它们的标头。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-22
          • 1970-01-01
          • 1970-01-01
          • 2018-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多