REFrostedViewControllerとUItableViewCellの横滑りで削除されたピット
2904 ワード
最近のプロジェクトではサイドスライドメニューを使い、REFrostedViewControllerをテストしても需要を満たすことができ、車輪を繰り返さない原則で使用することにした.
作者:romaonthego提供的Demo比较的に游びやすくて、见るとすぐに分かって、そこで私も
私が1つの需要を受け取るまで(つまりCellの側面滑り削除)、これはとても簡単なことだと思って、この需要を見て、また楽を盗んで、Androidは卵を痛めて(よくないと聞いて、具体的には私も知らない)、直接システム提供の代理店で3回5回2回を除いて、それではこの時に糸滑りを準備している間に、穴を掘りました.
横滑りして削除しても何年も反応しないで、考えるのが上手な私は淡々と排除法を使って、UItableViewはすべて特に何年使ったと思って、まだ間違っていますか?やはり各种の検査、问题がないことを発见して、仕方なくまた以前のコードを见て、すべて妥当で、使い方は绝対に间违いありません:
それは今iOS 9の穴を踏んだのではないかと疑っています.いろいろな資料を調べても、発見してもそうではありません.仕方なく自分を疑って、新しい空の工事を書くことにしました.最後に自分のコードをチェックするしかありません(プログラム犬に問題があったら、まず人を疑うのが一番好きです).
いろいろな検査を経て、绝対にすべて正しい书き方をして、兄はどうして间违えることができて、振り返っても夜に午后のコードがShitであることに気づいていません(PS:进歩速度が遅すぎるようです).最後に暴力テストを経て、たまに
案の定、自分が
たくさん突っ込んで、本題に入っても、実は何も言うことはありません.
直接コード:
問題を解決する考え方と肝心な方法は
はい、ここには
作者:romaonthego提供的Demo比较的に游びやすくて、见るとすぐに分かって、そこで私も
UINavigationController
をしてUIPanGestureRecognizer
ジェスチャーに参加してリアルタイムにメニューを移动して、すべてのビューコントローラはすべてこのUINavigationController
の管理の下で健康に成长します.私が1つの需要を受け取るまで(つまりCellの側面滑り削除)、これはとても簡単なことだと思って、この需要を見て、また楽を盗んで、Androidは卵を痛めて(よくないと聞いて、具体的には私も知らない)、直接システム提供の代理店で3回5回2回を除いて、それではこの時に糸滑りを準備している間に、穴を掘りました.
横滑りして削除しても何年も反応しないで、考えるのが上手な私は淡々と排除法を使って、UItableViewはすべて特に何年使ったと思って、まだ間違っていますか?やはり各种の検査、问题がないことを発见して、仕方なくまた以前のコードを见て、すべて妥当で、使い方は绝対に间违いありません:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
それは今iOS 9の穴を踏んだのではないかと疑っています.いろいろな資料を調べても、発見してもそうではありません.仕方なく自分を疑って、新しい空の工事を書くことにしました.最後に自分のコードをチェックするしかありません(プログラム犬に問題があったら、まず人を疑うのが一番好きです).
いろいろな検査を経て、绝対にすべて正しい书き方をして、兄はどうして间违えることができて、振り返っても夜に午后のコードがShitであることに気づいていません(PS:进歩速度が遅すぎるようです).最後に暴力テストを経て、たまに
Cell
で横滑り削除を引き出すことができ、これでジェスチャー問題に上昇し、ジェスチャーから調べることにした.案の定、自分が
UINavigationController
に加えたUIPanGestureRecognizer
は、サイドスライド削除ジェスチャーに影響を及ぼした.2つのジェスチャーが衝突したらどうするのか、直接やりましょう.まだ何が言えますか...たくさん突っ込んで、本題に入っても、実は何も言うことはありません.
UIGestureRecognizerDelegate
の方法でジェスチャーが同時に存在する問題を解決します.直接コード:
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];
panGesture.delegate = self;
[self.view addGestureRecognizer:panGesture];
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if ([[otherGestureRecognizer.view class] isSubclassOfClass:[UITableView class]]) {
return NO;
}
if( [[otherGestureRecognizer.view class] isSubclassOfClass:[UITableViewCell class]] ||
[NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UITableViewCellScrollView"] ||
[NSStringFromClass([otherGestureRecognizer.view class]) isEqualToString:@"UITableViewWrapperView"]) {
return YES;
}
return YES;
}
問題を解決する考え方と肝心な方法は
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
の方法の中で、私達はUITableViewの上のジェスチャーを捕獲する時ジェスチャーが同時に存在することを許さないで、Cellの上のジェスチャーを捕獲する時、このようにやっと横滑りして削除することができて、その他の情況の下で処理する必要がなくて、直接YES
に戻ってREFrostedViewController
にジェスチャーを処理して横滑りしてメニューを弾き出すようにします.はい、ここには
REFrostedViewController
とUITableViewCell
の横滑り削除の穴しか埋まっていません.他の仲間が出会って一緒に解決しましょう.