小编the*_*atp的帖子

UILocalNotification - 如何在App未运行时处理?

我现在已经实现UILocalNotifications了两个不同的应用程序.一个使用位置服务,这意味着如果它被杀死,它(通常)会重新启动(所以它不是一个大问题).但是,在另一个应用程序中,我UILocalNotification根据时间安排.在这种情况下,我遇到了一个重大问题.

如果我安排通知,那么应用程序会被杀死,推出内存,电话关闭然后再打开,我无法在打开应用程序时"自动"查看旧通知.

这是有效的工作流程(app在后台运行):

  1. 启动应用; 应用程序时间表通知; 关闭app; 应用程序现在在后台运行
  2. 接收当地通知; 最初忽略它; 从顶部拉下拉菜单(状态栏); 触摸通知以启动应用程序
  3. 结果:应用程序在通知中正确显示信息.

下面是它工作流程无法正常工作(应用程序不再在后台运行):

  1. 启动应用; 应用程序时间表通知; 关闭app; 应用程序现在在后台运行
  2. 手动杀死app(模拟我的情况)
  3. 仍然收到当地通知; 最初忽略它; 从顶部拉下拉菜单(状态栏); 触摸通知以启动应用程序
  4. 结果:应用程序启动,但未didReceiveLocalNotification调用该方法.用户认为该应用程序不起作用.
    注意:我甚至无法手动强制输入信息,因为如果他们收到了多个通知,我无法分辨他们触摸的是哪一个知道要显示哪一个.

有什么方法可以知道当应用程序没有在后台运行时它们触及了哪个通知(因此没有运行didReceiveLocalNotification method)?

ios uilocalnotification ios5

10
推荐指数
1
解决办法
5831
查看次数

Swift 4 - 无法指定'NSDate'类型的值来键入'Date?' 仅适用于物理设备

我已经看到了与此错误相关的其他问题,但我没有看到有人提到我目前遇到的问题.请注意,在转换为Swift 4之前,我对此代码没有任何问题.

以下是有问题的代码:

let verseNotification = NSManagedObject(entity: entity, insertInto: self.managedObjectContext) as! VerseNotification
verseNotification.date_scheduled = NSDate(timeIntervalSinceNow: finalTimeToScheduleSinceNow)
Run Code Online (Sandbox Code Playgroud)

请注意,该属性date_scheduled的类型为Date:

@NSManaged public var date_scheduled: Date?
Run Code Online (Sandbox Code Playgroud)

当我构建我的应用程序以在我的物理iPhone(iPhone 7)上的DEBUG中部署时,我收到以下错误(从Swift 3转换为Swift 4之后):

Cannot assign value of type 'NSDate' to type 'Date?' - Insert 'as Date'
Run Code Online (Sandbox Code Playgroud)

正如它所说的那样解决问题...所以,现在我的代码是这样的:

verseNotification.date_scheduled = NSDate(timeIntervalSinceNow: finalTimeToScheduleSinceNow) as Date
Run Code Online (Sandbox Code Playgroud)

...直到我将目标切换到模拟器.当我将目标切换为模拟器iPhone 7设备时,我现在收到以下错误:

'NSDate' is not implicitly convertible to 'Date'; did you mean to use 'as' to explicitly convert?
Run Code Online (Sandbox Code Playgroud)

关于这个错误的混淆是,正如你在上面看到的那样,我明确地转换为类型Date.具有讽刺意味的是,我能够摆脱模拟器iPhone 7的这个错误的唯一方法就是删除as Date我在第一步中添加的错误.

到底是怎么回事?我错过了什么?

我担心为"通用设备"构建发布版本,不知道为什么我会收到冲突的错误.

更新 我发现了一些新的,非常有趣的东西.

当我构建部署到我的物理iPhone …

core-data ios swift3 swift4

8
推荐指数
1
解决办法
2639
查看次数

iPhone:如何在地图上结合长按手势和拖动操作?

我已经尝试了很多东西,在这一点上发布代码可能会令人困惑,所以让我从这个概念开始.

我需要以某种方式将长按和触摸拖动的操作组合到一个操作中,例如LongPressThenDragGestureRecognizer.我试图在MKMapView上完成这个,所以我不能一直禁用用户交互,因为我想要地图的平移和缩放功能.

为了使事情复杂化,需要删除用户长按以识别交互的初始项(MKOverlay对象)并用新绘制的对象替换.此时,代码不再关心对象,仅在手指处于任何给定点的位置(我将在移动时重绘拖动的对象).

这是工作流程:

  1. 用户在地图上显示叠加层
  2. 用户触摸并保留该项目,让应用知道他们想要拖动它
  3. 应用程序用绘制的对象替换叠加层并禁用地图,以便它不会开始平移(而不是拖动).
  4. 用户拖动手指,并在移动时重绘对象.
  5. 用户抬起手指完成拖动
  6. 应用程序用新的地图叠加替换绘制的对象
  7. 应用程序允许用户在地图上进行交互,以允许平移/缩放/注释选择等.

到目前为止,我已经尝试了很多东西,但收效甚微.我到目前为止的最佳结果如下所示.这是使用MKMapView对象上的UILongPressGestureRecognizer(检查与叠加的交集)完成的,然后覆盖touchesBegan以进行地图触摸拖动.

  • 显示叠加并且用户成功执行可以适当识别的长按手势
  • 禁用地图用户交互,并用绘制的对象替换叠加
  • 用户必须抬起手指并再次触摸以启动拖动操作
  • 当用户抬起手指时,将绘制新的叠加层并再次启用地图交互

我非常接近,我只是不知道如何将手势合二为一,这样用户就不必抬起手指再次触摸以开始拖动.

任何想法都非常感谢.

iphone sdk drag-and-drop mkmapview uigesturerecognizer

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

使用loadNibNamed时未初始化子类UITableViewCell

我有一个子类UITableViewCell的类.我需要在创建单元格时初始化单元格中的一些值,并且我使用以下方法创建它:

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
Run Code Online (Sandbox Code Playgroud)

通过XCode"添加新文件"界面创建子类时,我得到以下方法:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) 
    {
        self.selectionStyle = UITableViewCellSelectionStyleBlue;

        [txtField setEnabled:YES];
        [txtField setTextColor:[UIColor redColor]];
        [txtField setPlaceholder:@"Fake Placeholder - Test Initialize"];

        [contactBtn setEnabled:YES];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

此方法中的代码永远不会被执行.我怎么能做到这一点?如果这不是实例化对象时使用的方法(使用NSBundle loadNibNamed),那么是什么?如何通过这种方式从笔尖创建单元格时初始化单元格?

任何帮助是极大的赞赏.

cocoa-touch initialization subclass uitableview ios

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

自定义MKAnnotationView - 如何捕获触摸而不是忽略标注?

我有一个自定义的MKAnnotationView子类.它完全按照我的要求显示视图.在那个视图中,我有一个按钮.我想捕获按钮上的事件以执行操作.这很好用.

但是,我不希望标注被解雇或消失.基本上,触摸标注中的按钮将开始播放声音,但我想保留注释,以便用户可以按下停止,而无需再次触摸地图图钉以重新注释注释.在另一个例子中,我希望按钮触摸可以在标注中设置更多细节的动画,因此我绝对不想在此时关闭标注.

每当用户选择标注或标注内的按钮时,如何防止标注消失?

iphone sdk callouts mkannotationview ios

3
推荐指数
1
解决办法
3359
查看次数

如何删除iCloud键值数据

我正在使用iCloud Key-Value Data存储解决方案,因此我不使用文档(UIDocument).我已经实现了同步,它似乎运行良好.但是,我现在需要做一些更详细的测试,我无法弄清楚如何强制删除iCloud上的数据.

如何从iCloud帐户中删除数据以进行测试?

我试过这个:

[[NSUbiquitousKeyValueStore defaultStore] setArray:[[NSArray alloc] init] forKey:@"iCloud_BG_KEY"];
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

[[NSUbiquitousKeyValueStore defaultStore] setArray:nil forKey:@"iCloud_BG_KEY"];
Run Code Online (Sandbox Code Playgroud)

除了为我的应用程序关闭iCloud Backup(设置> iCloud>存储和备份>管理存储> [my_backup_device]>显示所有应用程序> [我的应用程序]).

当然,我正在删除我的应用程序并重建并运行xcode.

如何强制删除iCloud文件(同样,对于键值数据存储)?

iphone sdk ios icloud

3
推荐指数
1
解决办法
4754
查看次数

UIImageView不释放内存(根据VM Tracker) - 低内存警告和终止

我真的很难在我的应用程序中耗尽内存.这是我正在执行的基本操作,如下所述.请注意,每当用户使用相机拍摄照片时,我会保存两个不同版本的照片 - 一个是预览(用于快速加载),另一个是高质量的缩放和稍后标记.

这是我的操作顺序列表:

  1. 在应用程序启动时,显示已在应用程序中拍摄的图像的缩略图(显然,在应用程序首次启动时,此列表为空).
  2. 触摸相机按钮即可启动 UIImagePickerController
  3. 用户拍摄照片并保存(再次保存预览并保存完整比例照片)
  4. 缩略图列表将刷新并显示新的预览图像.同样,VM Tracker仪器中"Image IO"的整体尺寸仍然非常小(可能增加0.5MB顶部).
  5. 用户触摸其中一个预览图像,启动不同的视图控制器,执行以下操作:
    • 创建新的UIImageView,加载图像,作为子视图添加到View Controllers视图
    • 突然,"Image IO"跳了30MB.

这不是什么大问题,但是当我回去(导航控制器弹出)时,"Image IO"类型和"Dirty"类型的大小都没有减小.就像UIImageView没有被破坏一样.每次我按下这个视图控制器并加载一个图像,大小增加30MB,弹出永远不会减少它.

我正在使用ARC,所以我不会自己调用release,但是当我弹出视图控制器时,我希望它会被破坏.

仅供参考,我用于保存预览的设置和完整图像是:

预习: [UIImageJPEGRepresentation([UIImage imageWithImage:image scaledToSize:CGSizeMake(300, 400)], 0.4f) writeToFile:previewPath atomically:NO];

充分: [UIImageJPEGRepresentation(image , 0.8f) writeToFile:imagePath atomically:NO];

我主要担心的是(1)在弹出包含视图控制器之后弄清楚如何摆脱UIImage使用的内存,但我也想知道(2)为什么加载时图像为30MB.

out-of-memory uiimageview ios xcode-instruments

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

如何使用 Core Graphics 在 iOS 中计算和绘制尺寸线(具有垂直端线的线)?

我知道如何使用 Core Graphics 绘制简单的线条。我现在需要绘制一条尺寸线进行测量。有关我需要绘制的示例(红色),请参见下图。顶线很容易,但在对角线上绘制垂直线需要一些数学运算,我现在很难弄清楚。

每条主线都以 (x,y) 作为起点,以 (x1,y1) 作为终点。然后我需要绘制在每个点 (x,y) 和 (x1,y1) 处相交的垂直线。

计算这些垂直线的点所需的数学是什么?

在此处输入图片说明

math geometry drawing core-graphics ios

0
推荐指数
1
解决办法
611
查看次数