论坛项目Xcode 9/iOS 11 适配

上个礼拜,用Xcode8.3.3上传APP到 iTunes connect的时候突然产生一个错误:

No accounts with iTunes Connect access
iTunes Connect access for "Team-Name" is required. Add an account in the Accounts preference plane.

网上的帖子讨论,一致任务这是苹果的bug,所以一直希望苹果修复。不过等了一个多礼拜,都没有看到效果,而另外又有帖子说,升级Xcode 9可以解决这个问题,所以打算升级到Xcode9和iOS 11。

升级之后,确实可以上传到iTunes connect了。可以看到上传的流程有所改变,这可能就是Xcode8.3.3出错的原因吧。

那么接下来就开始折腾Xcode 9/iOS 11的适配吧。

主要是论坛项目,编译运行之后,就发现,点击Tabbar没反应了。Tabbar我是自定义过的,弃用了系统的TabbarItem,而是在Tabbar的位置上添加了5个UIButton,通过这5个Button来触发切换Controller。
研究后发现
Xcode 9和之前版本的差异,是self.tabbar.subviews出现了差异。Xcode 9之前,self.tabbar.subviews返回了系统的TabbarItem对应的UITabbarButton。
而Xcode9中,self.tabbar.subviews并不返回系统的TabbarItem对应的UITabbarButton。

我在自定义Tabbar的代码中,调用了如下代码,相当于把系统的Button给删除了。

    for (UIView* obj in self.tabBar.subviews) {
        if (obj != 自定义的tabbar sub view) {
            [obj removeFromSuperview];
        }
    }

而Xcode9的变动,导致系统的Button并没有删除,所以点击时直接调用了系统的按钮,而忽略了自定义的按钮及其事件。

修改,添加如下代码,让系统的UIBarButtonItem 失效。

    for (UIBarButtonItem * buttonItem in self.tabBar.items) {
        [buttonItem setEnabled:NO];
    }

今天又发现一个问题,向Toolbar上添加Button,但点击Button并不会触发Button对应的事件。最后的修改方案在这里:
https://stackoverflow.com/questions/46107640/ios11-uitoolbar-contentview

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,326评论 1 14
  • 开发是一个学习的过程,当你在项目中遇到难点的时候,第一个想到的应该是Google,百度...我总是拿这样一句话来形...
    Senior丶阅读 10,255评论 35 67
  • 晨起暮归, 青春负我几滴眼泪; 天南海北, ...
    伦小让阅读 2,256评论 0 0
  • Susan170803阅读 929评论 0 0
  • 接着说这一段往事…… 君和新依旧甜蜜交往着,细腻如南方男人的新在没有采访,没有应酬的日子里,还是会像当初做学生时一...
    记忆九月一阅读 2,778评论 3 0