【问题标题】:How to make iOS app that will work from iOS 4.3 on Xcode 5.0如何在 Xcode 5.0 上制作适用于 iOS 4.3 的 iOS 应用程序
【发布时间】:2013-10-28 06:48:40
【问题描述】:

我正在尝试制作可以在 Xcode 5.0 上从 iOS 4.3 版本运行的 iOS(iPad 和 iPhone)应用程序。

让我们将我的项目称为 TESTING。

这是我所做的:

  1. 项目测试、信息、iOS 部署目标集 4.3
  2. 删除了 Storyboard -> 因为 iOS 5.0 版本支持它们
  3. 删除了自动布局 -> 因为 iOS 6.0 版本支持它
  4. 我已在 TESTING-Info.plist 中为窗口、视图或应用程序正确添加了“主 nib 文件基本名称”。
  5. 添加了 XIB 文件,这就是问题的开始

我应该添加什么:窗口、视图或应用程序?

我都试过了,结果如下:

视图 -> 不会显示视图(我添加了一些控件,例如:文本字段、标签)

应用程序和窗口在模拟器中运行良好。

但在 iPhone (iOS 6.x) 上的文本字段不工作,键盘显示位不接受输入。

如何正确操作?

【问题讨论】:

  • ios 4 和 5 实际上已经死了。 6岁以下不要打扰。

标签: iphone ios xcode ipad


【解决方案1】:

以目前 iOS 的状态,Apple 建议新应用程序不需要支持除 iOS 7 之外的任何东西。这似乎有点不切实际,但我建议你不需要支持 iOS 6 之前的任何东西。支持在 iOS 5 之前,对于任何非平凡的应用程序来说都是非常有问题的。

虽然目前这似乎不是您的问题,但支持 iOS strong 引用是一个编译器功能,可以很容易地为 iOS 4 编译,但 ARC weak 引用需要操作系统支持和配合。您可以使用__unsafe_unretainassign 解决此问题,否则您可能会使用弱引用。这有一些限制,但它通常有效。

另外值得注意的是,当使用 iOS 7 SDK 编译时,我遇到了一个适用于 iOS 6.x 的 UITextField 错误。错误是如果字段没有文本,textField.text 返回nil 而不是@""。这不是一个大问题,但如果你执行textField.text = [textField.text stringByAppendingString:@"1"]; 之类的操作,值将永远不会增长,因为[nil anything] 总是返回nil

【讨论】:

    【解决方案2】:
    1. 文件的所有者设置为UIApplication
    2. 添加 NSObject 并将其类设置为您的 App Delegate。
    3. UIApplication.delegate 与 App Delegate 对象连接。

    4. 添加UIWindow确保在启动时可见 已选中。这可能会导致错误的文本输入行为。

    5. 将窗口与 App Delegate window 属性连接。


    编辑 1:我不明白为什么人们会为这个 XIB 烦恼。这是等效的代码:

    • main.m:

      return UIApplicationMain(argc, argv, nil, @"YourAppDelegate"));
      
    • -application:didFinishLaunchingWithOptions::

      self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
      [self.window makeKeyAndVisible];
      

    编辑 2Neal 关于支持旧 iOS 版本是正确的。为什么要支持iOS 4.3,我的天?!

    【讨论】:

    • 我应该添加什么:窗口、视图或应用程序? -> 我没有得到那部分。
    • 如果您在谈论模板名称,因为您没有提及您所指的 Window、View 或 Application 到底是什么,请选择 Empty。它们都基本相同。
    • @WebOrCode 如果您已经在模拟器上运行了 XIB,只是在 iOS 6 上遇到键盘输入问题,请查看以粗体突出显示的文本。其他一切都只是为了完整性。
    • Window、View 或 Application 是你在执行 File -> -> New -> File... 选择 iOS (User Interface) 时得到的,你可以选择:Storyboard、View、Empty、Window 或应用。
    • 看起来整个都在这个“确保在启动时可见”被选中。但是我在使用 CTRL + 拖动到我的 TestingViewController.h 时遇到了问题。我如何解决它的方式如下。我在XIB中制作了View Controller,Window rootViewController连接到新的View Controller,ViewController的Class是TestingViewController。有没有更简单的方法?
    【解决方案3】:

    近 95% 的设备使用 iOS 6 或 iOS 7。使用 Xcode 5 开发 95% 的设备比从 iOS 4.3 开始更容易。

    【讨论】:

    • 在哪里可以看到这些统计数据?
    • Apple 有什么官方消息吗?喜欢 Android 版的 developer.android.com/about/dashboards/index.html 吗?
    • 不确定。我认为 Apple 仅通过开发门户分享此信息。
    • Apple 不分享统计数据,但所有第 3 方统计数据会告诉您一件事:iOS 5 已死。更不用说 iOS 4。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2011-12-12
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多