- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个可滑动的单元格,向该单元格添加平移手势。基本上,它与 Mailbox 应用程序中的单元格具有相同的外观和感觉,您有一个顶 View ,您可以向左或向右滑动以显示下面的另一个 View (revealView)。
我想用响应式(Reactive)方法构建它,所以我这样做的方式是:
首先,当我设置 View 和平移手势时,我过滤 rac_gestureSignal 以获取手势的当前状态并使用绑定(bind)更新顶 View 位置(此处简化了一些实现细节)当手势结束/取消时隐藏/显示 revealView。当 panDirection 或 revealView 发生变化时(为了相应地更新 revealView 框架),我也会调用 setNeedsLayout 从它们的值中合并信号,以及删除单元格重用的显示 View :
- (void)setupView
{
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:nil];
panGesture.delegate = self;
RACSignal *gestureSignal = [panGesture rac_gestureSignal],
*beganOrChangeSignal = [gestureSignal filter:^BOOL(UIGestureRecognizer *gesture) {
return gesture.state == UIGestureRecognizerStateChanged || gesture.state == UIGestureRecognizerStateBegan;
}],
*endOrCancelSignal = [gestureSignal filter:^BOOL(UIGestureRecognizer *gesture) {
return gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerStateCancelled;
}];
RAC(self, contentSnapshotView.center) = [beganOrChangedSignal map:^id(id value) {
return [NSValue valueWithCGPoint:[self centerPointForTranslation:[panGesture translationInView:self]]];
}];
[beganOrChangeSignal subscribeNext:^(UIPanGestureRecognizer *panGesture) {
[self updateTopViewFrame];
[panGesture setTranslation:CGPointZero inView:self];
}];
[[endOrCancelSignal filter:^BOOL(UIPanGestureRecognizer *gestureRecognizer) {
return [self shouldShowRevealView];
}] subscribeNext:^(id x) {
[self showRevealViewAnimated:YES];
}];
[[endOrCancelSignal filter:^BOOL(UIPanGestureRecognizer *gestureRecognizer) {
return [self shouldHideRevealView];
}] subscribeNext:^(id x) {
[self hideRevealViewAnimated:YES];
}];
[[RACSignal merge:@[RACObserve(self, panDirection), RACObserve(self, revealView)]] subscribeNext:^(id x) {
[self setNeedsLayout];
}];
[[self rac_prepareForReuseSignal] subscribeNext:^(id x) {
[self.revealView removeFromSuperview];
self.revealView = nil;
}];
[self addGestureRecognizer:panGesture];
}
然后,我公开了一个信号属性 (revealViewSignal),它会在显示 View 显示/隐藏时发送 YES/NO 值。因此,您可以订阅此信号,并因此在 View 更改其状态时采取行动。在内部,这个信号将是一个 RACSubject 在每次显示/隐藏动画结束后发送下一个事件:
- (void)showRevealViewAnimated:(BOOL)animated
{
[UIView animateWithDuration:animated ? 0.1 : 0.0
animations:^{
// SHOW ANIMATIONS
}
completion:^(BOOL finished) {
[(RACSubject *)self.revealViewSignal sendNext:@(YES)];
}];
}
- (void)hideRevealViewAnimated:(BOOL)animated
{
[UIView animateWithDuration:animated ? 0.1 : 0.0
animations:^{
// HIDE ANIMATIONS
}
completion:^(BOOL finished) {
[(RACSubject *)self.revealViewSignal sendNext:@(NO)];
}];
}
一切都按预期工作,但我只是想知道这是否是以 RAC 方式构建这种 View 的正确方法。另外,我想在上面的相同设置方法中设置两个手势识别器委托(delegate)方法,但我无法弄清楚是否可以在这里使用 rac_signalForSelector:fromProtocol: 方法,所以我最终实现了它们一如既往:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return [self checkIfGestureShouldBegin:gestureRecognizer];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return [self checkIfGestureShouldRecognize:gestureRecognizer];
}
非常感谢任何帮助,谢谢!
最佳答案
不幸的是,目前没有办法使用 RAC 来实现返回值的协议(protocol)方法。
这是一个棘手的问题,因为不需要信号来同步发送值,但显然您需要在调用委托(delegate)方法时返回<em>一些东西。您可能不想阻止信号,因为它很容易死锁或活锁。
关于ios - 使用 RAC 滑动单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185189/
1.Oracle官方安装文档中(下文中的doc 2,doc 3),有多处错误。最新的Release Notes(August 2006) 更正了一些,但还有不少未得到更正。 2.文中的三个脚本,
很难得到这个问题的答案。在 Oracle RAC 上,Oracle 逻辑目录如何工作?例如。如果我运行这个命令 CREATE DIRECTORY import_dir AS '/data/oracle
我使用 cx_Oracle 模块连接到独立的 Oracle 服务器,如下所示 import cx_Oracle CONN_INFO = { 'host': 'xxx.xx.xxx.x',
在单实例中,进程要想修改数据块,必须在数据块的当前版本(Currentcopy)上进行修改RAC环境也一样 这便涉及到一系列问题: 如何获得数据块的版本在集群节点间的分布图? 如何知道哪个节点
我有各种使用序列的数据库应用程序,我正在将这些应用程序从不带 RAC 的 10g 迁移到带 RAC 的 11g。我需要有序的序列并且可以容忍间隙。 我正在考虑按顺序进行缓存序列,我不知道对性能有何影响
我在一个 View 中有很多 UISegmentedControl(实际上是 74 个),我想使用 RACChannel 与它们各自的模型属性进行双向绑定(bind)。为了减少代码,我想在运行时使用
我知道这听起来很明显,但我收到以下错误:No known class mehtod for selector rac_sendAsynchronousRequest 一行: return [[[NSU
我正在构建一个可滑动的单元格,向该单元格添加平移手势。基本上,它与 Mailbox 应用程序中的单元格具有相同的外观和感觉,您有一个顶 View ,您可以向左或向右滑动以显示下面的另一个 View (
我正在尝试熟悉 Reactive Cocoa,但在组合信号时遇到了问题。 我知道 combineLatest 或 zip 只会在所有组合信号至少发送一个值时发送一个值。但是,如果任何信号发送一个值,是
更新: 代替: RACSignal * mergedItemsSignals = [RACSignal merge:itemSignalsArray]; 像这样生成新信号: RACSignal * m
我很好奇是否有人针对 NoSQL 数据库与 Oracle(特别是我在谈论 Oracle RAC)中的数据访问进行了基准测试?该项目需要处理至少 10mil+ 的记录,在其中搜索(但不一定非要实时),r
我最近遇到一个问题“您的应用程序是否支持 RAC?”。我对此一无所知。我试着检查它的含义,但没有人解释过这个概念。他们到处都从第 2 步开始,即如何进行编码、配置等。但是没有人将“RAC 感知”作为一
前言 相信在 Redhat 7 上安装过 Oracle 12CR2 RAC 的朋友,看了本文一定会后悔没有早点看到这篇完美的避坑指南! 如果有朋友不信邪,可以按照常规的方式安装,大概率是会遇
Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个s
1)、检查集群状态: [grid@rac02 ~]$ crsctl check cluster CRS-4537: Cluster Ready Services is
有什么方法可以取消RACCommand的执行吗? 例如,我有一个具有无限执行信号的命令,如下所示: RACCommand *command = [[RACCommand alloc] initWith
我开始使用 Reactive Cocoa 研究 MVVM 模式,现在我有一些不清楚的情况。我想将按钮的 enable 属性与我的模型绑定(bind),并同时绑定(bind) rac_command。这
我正在尝试将 Reactive Cocoa 库添加到我的 Xcode 项目中,但我做不到。我正在尝试查找一些教程,因为我无法理解 Reactive Cocoa 页面中的教程。如何将此库添加到我的项目中
我对使用 ReactiveSwift 和 ReactiveCocoa 相当陌生,我似乎遇到了有关初始化具有依赖项的属性的正确方法的障碍。 例如在下面的代码中,我尝试初始化一个属性,但我得到了预期的编译
我正在使用 RAC4 开发一个应用程序,它从服务器获取城市对象列表并将它们作为 JSON 返回。我通过将每个城市及其适当的属性存储为 City 对象来处理响应。然后,我将每个城市映射到 CityVie
我是一名优秀的程序员,十分优秀!