小编jim*_*buk的帖子

如何重命名iOS 8 Today Widget?

我刚刚开始尝试在我的应用程序中添加iOS 8 Today Widget,到目前为止它还可以,但是我按照原始模板并使用TodayWidget作为其名称创建了我的小部件.在我的应用程序的Xcode文件的上下文中,目标/产品名称是好的.但遗憾的是,这个名称也显示在我的小部件上方的通知中心内.

我已经尝试在我的项目中跟踪与显示内容匹配的各种名称,但到目前为止,我还没有找到一个让我更新显示名称的名称.

有人有任何想法吗?

rename ios ios8-today-widget

18
推荐指数
3
解决办法
4502
查看次数

UITableViewController子类实现UIDataSourceModelAssociation协议,但从不调用其方法

我的应用程序使用Stanford课程的CoreDataTableViewController,它是UITableViewController的子类.

对于我的应用程序的特定视图,我创建CoreDataTableViewController的子类来管理特定视图.

我刚刚在我的大多数应用程序中连接状态编码和恢复,这一切似乎都正常工作.我唯一留下的就是实现UIDataSourceModelAssociation协议,据称保留UITableViews的可见和选定行(我也希望它可以保留表视图的编辑状态,如果我选择了它,则保留特定行的编辑状态删除,但尚未确认).

我在CoreDataTableViewController中实现了UIDataSourceModelAssociation,希望它能够适用于我的所有视图,但是在调试它时该功能不起作用,并且添加断点我发现当我将我的应用程序放入时,两个UIDataSourceModelAssociation方法都没有被调用使用主页按钮的背景,或通过在XCode中重新运行来恢复它.

CoreDataTableViewController及其子类实现了一些dataSource方法,以实际显示表视图中的行.我四处搜索,发现UITableViewController自动将自己添加为tableView的dataSource.

我在表单的子类viewDidLoad函数中添加了sanity asserts

assert(self.tableView);
assert(self.tableView.dataSource == self); <--- fails here
Run Code Online (Sandbox Code Playgroud)

在检查dataSource是我们自己时失败了.我可以通过记录和使用调试器来看到此时dataSource是非零的.

我想我只是想知道当我们对一个类进行子类化时,每个类是否共享相同的自身值,或者是因为我的UITableViewController将自己设置为dataSource,但是当我将它子类化为两次时,我的特定视图实例它的self与父UITableViewController略有不同.或者是其他东西拦截dataSource并根据需要转发.作为修复,我应该考虑将自己的子类硬编码为self,或者让CoreDataTableViewController将其自身添加为dataSource,因为这是实现UIDataSourceModelAssociation方法的地方.

作为参考我的视图层次结构包含我的UITableViewController子视图生活在NavigationControllers中,我听说可能会导致问题.

稍微清楚一下子类应如何在各类的自指针方面起作用,并想知道是否有人能够弄清楚为什么我的协议方法没有被调用会非常感激.

干杯

datasource uitableview ios state-restoration

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

检测iOS 3D Touch偷看时间(没有弹出)

我刚刚开始在我的应用程序中添加基本的3D Touch功能,并且第一次添加它的尝试进展顺利,看起来相当简单.

我想知道是否有办法检测到一个偷看已经完成,而没有进入流行音乐.

UIViewControllerPreviewingDelegate方法很适合告诉你请求偷看或弹出,但我没有看到一种方式被告知偷看已经结束而没有进入流行音乐.

Peeked ViewController是否有办法知道它当时是偷看并且离开,因为我认为这就足够了.基本上我有一个segue,通常会在进入视图时创建一些东西,如果我查看它就需要撤消,如果用户选择刚刚结束窥视而不会弹出.此刻我似乎无法看到检测这种情况的好方法是能够执行所需的清理.

干杯

uiviewcontroller ios 3dtouch

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

iOS 13 UIViewController 未声明将其 modalPresentationStyle 恢复为全屏

我在我的应用程序中的大多数模态中都采用了新的 iOS 13 模态呈现样式,但是一个导航控制器并不能很好地适应新样式,因此我将其设置为

UIModalPresentationFullScreen

在展示它时效果很好。

我刚刚注意到一个错误,当我的应用程序在 ViewController 上进行状态保存和恢复时,它会在以 UIModalPresentationPageSheet 的 modalPresentationStyle 恢复后以模态呈现。

作为 ViewController 的内置属性,它们的状态恢复是 Apple 的责任,我猜他们只是错过了正确处理它。

谢天谢地,我已经能够通过将以下内容添加到我现有的状态恢复处理中来解决这个问题

- (void)decodeRestorableStateWithCoder:(NSCoder *)aDecoder
{
  ...
  self.navigationController.modalPresentationStyle = UIModalPresentationFullScreen; 
}
Run Code Online (Sandbox Code Playgroud)

其他人遇到过这个问题或有其他解决方案吗?

干杯

uiviewcontroller ios state-restoration ios13

7
推荐指数
0
解决办法
148
查看次数

如何为 UIPickerView 行设置 Voice Over 可访问性标签?

我正在尝试使我的 Voice Over 的 UIPickerView 可访问,我注意到 UIPickerViewAccessibilityDelegate 协议相当不完整。它只允许您为 pickerView 组件指定标签和提示,而不是组件内的行。(它也有一个错误,它的 pickerView:accessibilityLabelForComponent: 方法没有在它的 pickerView 参数中传递 UIPickerView*,而是一个 UIAccessibilityPickerComponent !)

所以我现在想知道,有没有办法为我的选择器的行设置自定义可访问性标签,还是只能读出屏幕上显示的实际选择器行值?

我正在尝试做一个选择器视图,显示时间,小时,分钟,秒。我无法让 datePicker 做到这一点。但是,如果每一行都可以在旁白中说“3 小时”而不是 3 小时,那就太好了。如果我必须将可见标签设置为我希望旁白读出的内容,那么我不确定标签将适合显示这一点,即。

15 小时 35 分 20 秒

非常适合用英语显示在屏幕上,不确定本地化后它会增长多大..因此能够为每一行设置标签的理想选择。

干杯

uipickerview ios voiceover

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

iOS - 如何判断本地通知是否导致我的应用程序进入前台?

我的应用代表中有代码

    application:didReceiveLocalNotification:
Run Code Online (Sandbox Code Playgroud)

每当我的应用程序在前台时,显示该本地通知的UIAlertView的方法.

如果我的应用程序在本地通知到达时在后台,则会向用户显示通知,并且可以通过选择启动应用程序.在这种情况下,我的应用程序来到我的App代表的前台

    applicationWillEnterForeground:
Run Code Online (Sandbox Code Playgroud)

叫做.然后再次调用didReceiveLocalNotification方法,导致UIAlertView再次出现.但实际上,当应用程序处于后台时,用户已经有了警报,所以理想情况下我不希望再次显示此警报.

我可以看到,如果一个应用程序是由于本地通知而启动的话

    application:didFinishLaunchingWithOptions:
Run Code Online (Sandbox Code Playgroud)

您可以检查密钥的启动选项的方法

    UIApplicationLaunchOptionsLocalNotificationKey
Run Code Online (Sandbox Code Playgroud)

要知道本地通知是否导致您的应用程序启动,但是当用户与本地通知进行交互而刚刚返回到前台时,似乎没有找到此方法的方法.

检查我的applicationWillEnterForeground方法是否最近被调用似乎是一个讨厌这个问题的方法,或者类似于这个问题中给出的答案" iOS如何判断应用程序是运行前景还是后台? "将允许我检查

    [UIApplication sharedApplication].applicationState
Run Code Online (Sandbox Code Playgroud)

从我的内心

    application:didReceiveLocalNotification:
Run Code Online (Sandbox Code Playgroud)

方法.希望它能够及早收到,在这种情况下我的applicationState仍然不会被设置为UIApplicationStateActive.

或者有更好的解决方案吗?

干杯

application-state background-foreground ios uilocalnotification

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

iOS13 UIViewController isModalInPresentation 在 ObjectiveC 中没有设置器所以不能设置?

我正在尝试对我用 ObjectiveC 编写的应用程序进行一些更新,以采用新的 iOS 13 功能。我正在研究以模态呈现视图控制器的新方式的交互式解除处理,在检测到控制器中的更改后,我希望停止交互式解除并按照 Apple 的建议向用户呈现对话。尝试使用以下代码执行此操作

self.isModalInPresentation = YES;
Run Code Online (Sandbox Code Playgroud)

不编译并出现以下错误

No setter method 'setIsModalInPresentation:' for assignment to property
Run Code Online (Sandbox Code Playgroud)

从我的 ObjectiveC 项目转到此属性的实现转到 ObjectiveC 标头,其属性定义如下

// modalInPresentation is set on the view controller when you wish to force the presentation hosting the view controller into modal behavior. When this is active, the presentation will prevent interactive dismiss and ignore events outside of the presented view controller's bounds until this is set to NO.
@property (nonatomic, getter=isModalInPresentation) BOOL modalInPresentation API_AVAILABLE(ios(13.0));
Run Code Online (Sandbox Code Playgroud)

在 …

uiviewcontroller ios ios13

3
推荐指数
2
解决办法
2125
查看次数