小编Mit*_*hen的帖子

Firebase Analytics 中的 iOS 版本报告?

我用 Firebase SDK 替换了 Google Analytics SDK。我希望生成一些以前显而易见的报告。例如,我想查看按 iOS 版本划分的用户细分。我知道这些数据是根据https://support.google.com/firebase/answer/6317486?hl=en收集的,但不确定如何实际查看数据。

ios firebase-analytics

13
推荐指数
5
解决办法
5771
查看次数

如何检测用户何时在UITextField上使用密码自动填充

我已经实现了在iOS 11上支持密码自动填充所需的所有应用和服务器更改,并且它运行良好.我希望它能更好一点.

我的用户名和密码字段是UITextFields.我想确定用户何时"自动填充"了两个UITextField中的一个,因此我可以进入下一步.目前用户自动填充项目,然后需要按下屏幕键盘上的"下一步"按钮才能前进.我想代表用户触发这个.

WWDC2017密码自动填充会话说使用UITextFieldTextDidChange.这有效,但当然用户手动输入这些字段时也会触发此操作.

我的想法是将文本的先前版本与文本的新版本进行比较,并假设如果长度从零增加到大于某个最小长度(2或更多),则用户使用自动填充.这应该在大多数情况下都有效,但是存在错误触发的风险(也许在慢速设备上快速输入).所以对我来说,这可能是一个冒险的假设.

我很好奇是否有人找到了更加确定的方法来确定密码自动填充是否已在UITextField上使用,或者只是认为我对错误触发的担心是没有根据的.

autofill uitextfield ios uitextfielddelegate

10
推荐指数
3
解决办法
3828
查看次数

没有p12密码恢复签名证书?

我已经获得了一个iOS应用程序代码库,我想通过之前开发人员使用的现有Enterprise证书进行分发.

导入提供的.mobileprovision文件后,我(并不奇怪)得到"找不到有效签名身份"错误.特别是在建设时:

The identity '[name]' doesn't match any valid, non-expired certificate/private key pair in your keychains
Run Code Online (Sandbox Code Playgroud)

我获得了原始的CertificateSigningRequest.certSigningRequest文件,.p12文件和.cer文件.我没有得到.p12文件的密码.

是否可以在没有.p12文件密码的情况下从CertificateSigningRequest.certSigningRequest重建我需要的内容?我很可能得到.p12密码,但不及时.

谢谢!

keychain ios ios-provisioning

6
推荐指数
1
解决办法
2万
查看次数

PDFKit:PDFView 在设备旋转时不会调整大小

我有一个显示 PDFView 的 iPad 应用程序。该应用程序可旋转到任何方向。PDFView 是全屏和单页的。PDF 在任一方向启动时都按预期显示;整个第一页都是可见的,缩放到适合屏幕,没有任何 PDF 出现在屏幕外。PDF 将始终是美国信纸大小的文档。

旋转时,PDF 会旋转,但不会调整大小。当旋转横向到纵向时,PDF 显示为“太小” - 外面有一个巨大的空边框。当从纵向旋转到横向时,将显示 PDF 的顶部三分之二,底部三分之一丢失在屏幕底部下方。

自动布局是在代码中配置的,而且相当简单(顶部、前导、高度和宽度)。

我在 Reveal 中查看了布局。它表明 PDFView 实际上按照 AutoLayout 配置正确调整大小。PDFView 内部是一个(私有)PDFDocumentView,它不会调整大小。

我发现“调整”视图大小的唯一方法是在 viewWillTransitionToSize 中捕捉旋转,从超级视图中删除 PDFView,并在将视图放回屏幕之前完全重新配置视图(包括重新加载文档)。这是一个糟糕的用户体验。

我将代码提取到一个简单的单视图产品中。整个 UIViewController 的代码如下。下面还有来自 Reveal 的屏幕截图,显示了这个问题。在这种情况下,我以纵向启动应用程序,旋转设备,然后截取这些屏幕截图。(显示的 PDF 是 IRS 税表;我和应用程序都与 IRS 无关 - 它恰好是我使用的默认示例 PDF。)

#import "ViewController.h"
@import PDFKit;

@interface ViewController ()
@property (nonatomic, strong) PDFView *pdfView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupPDF];
}

-(void)setupPDF {
    NSString *filename = @"myfile.pdf";
    NSString *filenameWithoutPDF = [filename stringByReplacingOccurrencesOfString:@".pdf" withString:@""];
    NSURL …
Run Code Online (Sandbox Code Playgroud)

rotation pdfview ios

6
推荐指数
1
解决办法
2579
查看次数

如何从模态视图中popToRootViewController?

我有一个典型的UITableViewController视图集.在所有视图上都有一个按钮,可以显示模型视图.在该设置视图上是一个按钮.我希望该按钮解除模态视图在UITableViewController的navigationController上实现popToRootViewController.

解雇模态视图很容易:

[self dismissModalViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

这很好.我试过这个来弹出主UITableViewController:

[self.parentViewController.navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

没有任何反应.

我可以实现一个委托来实现这一点但是有很多视图控制器具有相同的设置按钮(还有更多),所以首选找到不需要每个视图控制器中的附加代码的解决方案.

非常感谢!

uinavigationcontroller modalviewcontroller ios

5
推荐指数
2
解决办法
4982
查看次数

在applicationWillEnterForeground之前更改视图

我希望在一段时间处于后台后将用户锁定在我的应用之外.我在AppDelegate中捕获了这个applicationWillEnterForeground(并与存储的时间进行比较applicationWillResignActive).如果小于超时时间,则不执行任何操作.如果超过我打电话的超时时间:

[_navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

这会将用户带回根视图.

一次视觉中断,它完美无缺.在弹出到root之前,先前的视图(用户在应用程序处于非活动状态时正在查看的视图)显示非常短暂.在测试中,似乎视图在applicationWillEnterForeground被调用之前重新出现.

我唯一想到的就是在变为非活动状态之前隐藏所有内容,例如用填充的矩形遮挡视图.这对我来说就像是一个肮脏的黑客,所以我觉得有更好的办法.

我也愿意以不同的方式达到相同的最终结果.谢谢!

uinavigationcontroller uiapplicationdelegate ios

5
推荐指数
1
解决办法
1714
查看次数

iOS Action Extension-调用另一个Action Extension时内存使用量迅速增加

我有一个动作扩展,它接受图像,对图像进行小修改(例如叠加水印),然后允许用户打开另一个UIActivityController,将修改后的图像发送到另一个(任意)扩展(例如与社交媒体分享图片)。与大多数(但不是全部)扩展共享后,我的扩展崩溃了,因为达到了内存限制。

我得到的错误是:

EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=120 MB, unused=0x0)
Run Code Online (Sandbox Code Playgroud)

这在操作系统驱动的UIImage调用的深处发生。

脚步:

  1. 从“照片”应用中选择图像
  2. 选择共享图标
  3. 选择我的分机
  4. 在我的扩展程序中查看修改后的图片
  5. 选择共享图标
  6. 选择其他扩展名(Tweetbot,Facebook ...)
  7. 看到其他扩展名的用户界面开始出现
  8. 崩溃

对于iOS提供的扩展名(例如保存或打印),不会出现崩溃。崩溃确实会出现在我尝试过的所有第三方扩展中。

我用仪器进行诊断。我的扩展程序在执行图像操作时的内存使用量短暂达到75MB的峰值,然后降至27MB。当用户界面开始为其他扩展程序构建时,我的应用程序的内存占用量迅速飙升。它达到120MB,然后消失。

在内存升级期间,我收到了三个didReceiveMemoryWarning调用。我持有的唯一数据是屏幕上的UIImageView。我已经尝试过杀死UIImageView了(imageView.removeFromSuperview然后imageView = nil),结果没有变化。

似乎辅助扩展正在我的扩展的内存中加载,并且合并的占用空间超过了120MB的限制。那有意义吗?那是预期的吗?

我承认存在一个扩展的想法是存在的,它只是暂时保留要与另一个扩展共享的数据,但这并不是我能想到的最佳方法。修改后的数据不需要永久保存-如果新版本的照片库中也有新版本,则用户很容易混淆。我曾考虑过扩展程序可以从那里打开我的主应用程序进行共享,但是这似乎是被设计所阻止的(有些黑客建议我没有尝试过-请参见openURL在Action Extension中不起作用)。

有任何解决方法吗?谢谢!

uiimage ios ios-extensions

5
推荐指数
0
解决办法
386
查看次数

如何消除PDFView的“页面阴影”?

将iOS PDFView添加到UIView时,PDFView的页面区域会添加阴影样的边框。有消除阴影的方法吗?

我知道一些凌乱的方法可以做到这一点:在屏幕外扩展边界,覆盖白色的UIView以隐藏阴影,或修改私有PDFPageView(以裁剪为边界)。我特别不希望这里的边界越界,并且也不想与其他黑客混在一起。

附带示例。(例如,此处使用的IRS表格;应用与IRS无关...) 在此处输入图片说明

pdfkit pdfview ios

4
推荐指数
1
解决办法
333
查看次数

WidgetKit 配置,一个参数基于另一个参数的选择

我正在开发一个带有两个动态参数的 WidgetKit 小部件。其中一个参数仅限于第一个参数允许的选项。假设第一个是船长,第二个是船长的船。允许的配置可能是(忽略佳能):

Captains: [Kirk, Picard, Crunch]
Captain: Kirk, Ship: [Enterprise, Galileo]
Captain: Picard, Ship: [Enterprise, Voyager, Cube]
Captain: Crunch, Ship: [Sugar, Berry, Chocula]
Run Code Online (Sandbox Code Playgroud)

我有逻辑工作。例如,如果用户选择 Picard,然后点击“发货”按钮,则只有 Enterprise、Voyager 和 Cube 可用选项。然后,用户可以选择其中一艘飞船(例如 Cube),一切都很好。

然而,当船长更换时,船舶选项不会改变或重置。假设经过上述设置后,用户将队长更改为柯克。飞船仍设置为立方体。用户可以退出小部件的配置,就好像一切都很好,但这是一个无效的配置。

我希望发生的情况:当用户更改船长时,船舶将更改为所选船长的第一个可用船舶选项。如果飞船空白(需要选择),或者用户界面强制提示飞船(受可用选项限制),或者几乎任何其他阻止无效组合的东西,我也很好。

有没有办法根据第一个参数的选择触发对第二个参数的编程更改?

我不想运行时小部件中显示“无效组合”消息。我想我的备份是在用户做出无效选择的情况下为他们选择一艘船,但这并不理想。

如果重要的话,真正的 Widget 中的第一个参数(上面示例中的 Captain)是真正动态的(通过 API 提供的字符串数组)。第二个参数(上面的 Ship)是一组固定的三个选项,其中任何一个、两个或全部三个都可以应用于第一个参数的任何选择。预计用户可以创建具有不同配置的多个小部件。

ios swift widgetkit

4
推荐指数
1
解决办法
1283
查看次数