美文网首页收藏ios
论坛项目Xcode 9/iOS 11 适配

论坛项目Xcode 9/iOS 11 适配

作者: 启发禅悟 | 来源:发表于2017-09-25 16:05 被阅读409次

    上个礼拜,用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

    相关文章

      网友评论

        本文标题:论坛项目Xcode 9/iOS 11 适配

        本文链接:https://www.haomeiwen.com/subject/yowrextx.html