我有一个对象,当QLPreviewController更改显示的文档时,需要通知该对象。 QLPreviewController具有currentPreviewItemIndex属性,该属性在文档更改时更新。我已经将我的对象添加为currentPreviewItemIndex的观察者,并且到目前为止,在我的代码中更改属性后,它会收到通知。
问题是用户可以更改在屏幕上滑动显示的文档,而我发现在这种情况下不会生成通知。
在这种情况下,也有解决办法来接收通知吗?我想通知是在调用属性currentPreviewItemIndex的setter时生成的,并且可能是当用户在对象QLPreviewController内部滑动属性时更改了通知。
另一个解决方案可能是禁用QLPreviewController中的水平滑动,但保留垂直滑动(有箭头按钮可以更改显示的文档)。你是怎样做的?
先谢谢您的帮助。
贾南德里亚
最佳答案
在QLPreviewController上创建一个类别,然后选择适当的方法,然后为KVO添加willChange/didChange;)
认真地:
我尝试了KVO,但它对我也不起作用。.1)id向苹果提交了一个bug,说您需要这个
但是作为一种解决方法
这被称为确定,每次我们滑动时,我都会对此进行“破解”以激发您自己的正确KVO。就像是
static NSInteger oldIndex = -1; //reset when the panel is hidden or shown
int newIndex = qlController.displayedIndex;
if(oldIndex != newIndex) {
oldIndex = newIndex;
[qlController willChangeValueForKey:@"displayedIndex"];
[qlController didChangeValueForKey:@"displayedIndex"];
}
我在此处以内联方式编写它,因此肯定会有错别字和错误,但是我认为一般方法可以奏效。
关于objective-c - 观察QLPreviewController.currentPreviewItemIndex的键值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13270731/