iOS 导航控制器边缘滑动 全屏滑动 以及手势冲突问题
来源:互联网 发布:mysql 快照读有什么用 编辑:程序博客网 时间:2024/04/30 10:55
1.解决自定义返回按钮边缘滑动失效的问题
(1)自定义了导航控制器 重写 pushViewController 方法自定义了返回按钮 边缘滑动失效
(2)在 viewDidLoad 设置()
//边缘滑动
self.interactivePopGestureRecognizer.delegate =self;
(3)设置代理实现方法(因为不设置在根控制器会触发手势,造成假死状态)
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count>1;
}
2.实现全屏滑动返回效果(1)自定义了导航控制器 重写 pushViewController 方法自定义了返回按钮 边缘滑动失效
(2)在 viewDidLoad 设置(遵守协议)
//全屏滑动
//添加新的拖拽手势 调用系统原来的滑动方法
(方法由来请打印self.interactivePopGestureRecognizer)
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizeralloc]initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
pan.delegate =self;
[self.viewaddGestureRecognizer:pan];
//禁止原来自带的手势
self.interactivePopGestureRecognizer.enabled =NO;
(3)设置代理实现方法(因为不设置在根控制器会触发手势,造成假死状态)
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count>1;
}
3.如果子控制存在水平方向滚动的ScrollView时(边缘返回)手势失效 解决办法//多手势共同触发
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
//以下两个成对的方法比较有趣(实现其一即可)
//返回yes-前面失效后面生效 返回no-前面生效后面失效
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return ![gestureRecognizerisKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}
//返回yes-前面生效后面失效 返回no-前面失效后面生效
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return [gestureRecognizerisKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}
4.如果子控制存在水平方向滚动的ScrollView时(全屏返回)(个人观点 不喜勿喷,欢迎指正)(实现 多手势共同触发代理 会导致ScrollView的左拖拽和滑动返回冲突)
建议:如果子控制要实现scrollview 的水平滑动 建议实现边缘滑动
如果要是实现全屏滑动返回 建议不使用scrollview的水平滑动,建议使用按钮的点击切换(详情效果请看qq全屏返回 兴趣部落模块 实现
(1)自己加的全屏拖拽手势<UIPanGestureRecognizer: 0x147df0ab0; state = Possible; view = <UILayoutContainerView 0x147dec780>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x147defa40>)>>
(2)UIScrollView 的手势<UIScrollViewPanGestureRecognizer: 0x1491d5670; state = Possible; delaysTouchesEnded = NO; view = <UICollectionView 0x1481e9a00>; target= <(action=handlePan:, target=<UICollectionView 0x1481e9a00>)>; must-fail = {
<UIScrollViewPagingSwipeGestureRecognizer: 0x149101620; state = Failed; view = <UICollectionView 0x1481e9a00>; target= <(action=_handleSwipe:, target=<UICollectionView 0x1481e9a00>)>>
- iOS 导航控制器边缘滑动 全屏滑动 以及手势冲突问题
- IOS导航控制器的手势滑动后退
- IOS开发 导航控制器全屏滑动返回效果
- 导航控制器全屏滑动返回效果
- xamarin.iOS 滑动视图上添加边缘滑动手势
- iOS一个全屏滑动返回手势
- 全屏滑动,截取滑动手势
- 【Android手势冲突】彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏
- 全屏滑动返回手势
- IOS ScrollView 子控件滑动手势冲突
- ios 8行代码教你搞定导航控制器全屏滑动返回效果
- iOS 3行代码搞定导航控制器全屏滑动返回效果
- ios 8行代码教你搞定导航控制器全屏滑动返回效果
- 8行代码教你搞定iOS导航控制器全屏滑动返回效果
- Swift - 导航控制器(navigationController)全屏滑动返回功能实现
- 当前主流的导航控制器手势滑动效果
- iOS端如何解决自定义滑动退出手势与TableViewCell删除手势之间的冲突问题
- iOS手势以及手势冲突问题
- Android可展开的列表组件(ExpandableListView)模板
- PHP的四种基本排序方法
- CSS3 传统布局(上)(20160902-0033)
- IOS 动态的改变label的高度
- <hadoop学习历程>--笔记心得3-HDFS数据管理与容错
- iOS 导航控制器边缘滑动 全屏滑动 以及手势冲突问题
- Codeforces Round #344 (Div. 2)-C. Report(单调栈)
- HTTP与TCP的关系
- GPS坐标(经纬度)转换为百度坐标(经纬度)续
- Android中WebView的使用
- Java 中的 ==, equals 与 hashCode 的区别与联系
- 【第2周 项目0 - 宣告“主权”】 .
- 给 Android 开发者的 RxJava 详解
- 值得深究的概念