0

我正在尝试制作适用于 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) 上的文本字段不起作用,键盘显示位它不会接受输入。

如何正确地做到这一点?

4

3 回答 3

2

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

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

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

于 2013-10-19T13:50:54.567 回答
1
  1. 文件的所有者设置为UIApplication.
  2. 将其类添加NSObject并设置为您的 App Delegate。
  3. UIApplication.delegate与 App Delegate 对象连接。

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

  5. 使用 App Delegatewindow属性连接窗口。


编辑 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,我的上帝?!

于 2013-10-19T14:06:25.007 回答
1

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

于 2013-10-19T13:15:59.630 回答