取消按钮在 iOS 的谷歌登录框架中不可见
Posted
技术标签:
【中文标题】取消按钮在 iOS 的谷歌登录框架中不可见【英文标题】:Cancel button not visible in google sign in framework for iOS 【发布时间】:2015-12-03 21:33:56 【问题描述】:这个问题可能很琐碎,但自从过去 6 个小时以来,这让我很头疼。我已经在我的项目中集成了适用于 ios 的谷歌登录 SDK,除了取消按钮之外,一切似乎都运行良好。 .
当我单击登录屏幕中的 google 按钮时,会出现此屏幕。但是,如果用户决定取消 google 登录,则无法解除此操作。通常取消按钮应该出现在左栏按钮项的位置,但在这种情况下它丢失了。
我在这里做错了什么??
【问题讨论】:
检查它是否重定向到 Safari 那么你必须实现很多代码。如果它重定向到 safari,Apple 也会拒绝 Google Sign In 特色应用。 这是最新的 google 登录 SDK,它不会重定向到 safari。相反,它会在应用程序本身中打开一个这样的屏幕...... 很高兴知道.. Google 也将所有头文件作为开源提供,您可以随时编辑您想要的任何内容。 真的很奇怪,我也有同样的问题:( @GenosseWu :我已经从我的项目中删除了所有 google sdk 文件并再次从头开始集成它们,然后它对我有用.. 【参考方案1】:您的 AppDelegate 中是否有任何 UIAppearance 配置?也许条形颜色与按钮文本颜色相同。我通过在我的AppDelegate.swift
文件中为UINavigationbar.appearance()
代理公开的大多数相关属性设置全局默认值解决了这个问题(对于ObjC 应该类似)
UINavigationBar.appearance().barTintColor = UIColor(red:0.00, green:0.42, blue:0.90, alpha:1.0)
【讨论】:
【参考方案2】:您只会在两种情况下获得取消按钮:
1 - 如果您已经在此屏幕中输入了 google 用户名和密码并移至下一个。
2 - 如果您已安装 google plus 应用并已登录。
在当前情况下,您不会将取消按钮作为 web 视图。 所以解决方案是您需要创建自己的后退按钮。
创建一个条形按钮项并将其分配给navigationItem 的leftBarButtonItem。
将此代码放入viewDidLoad
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
[myButton setImage:[UIImage imageNamed:@"CancelImage" forState:UIControlStateNormal];
[myButton setContentEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];
[myButton addTarget:self action:@selector(backToHOmePage) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customBackBtn = [[UIBarButtonItem alloc] initWithCustomView:myButton];
self.navigationItem.leftBarButtonItem = customBackBtn;
然后创建backToHomePage方法——
-(void)backToHOmePage
[self.navigationController popToRootViewControllerAnimated:YES];
【讨论】:
【参考方案3】:尝试删除GoogleSignIn.framework
和
GoogleSignIn.bundle
文件并将它们添加回来。
另外,请确保您已将 GoogleSignIn.bundle
添加到 Xcode 项目的 Copy Bundle Resources 构建阶段(转到 Targets > YourProject > Build Phases > Copy Bundle Resources 并添加 GoogleSignIn.bundle
)。
【讨论】:
以上是关于取消按钮在 iOS 的谷歌登录框架中不可见的主要内容,如果未能解决你的问题,请参考以下文章