国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS開發MMDrawerController左右抽屜打開手勢與中心視圖子視圖控制器手勢沖突問題的解決方案

2019-11-14 19:11:16
字體:
來源:轉載
供稿:網友

MMDrawerController是一個很好用的實現抽屜效果的第三方類,但有時候當我們在中心視圖的子視圖控制器中需要使用手勢進行其他操作的時候會產生手勢沖突,導致運行效果不符合我們的想象。那么問題來了,該怎么解決沖突問題呢?

下面是我在使用過程中的個人總結:

我的需求:

1、只有左抽屜和中心視圖控制器,在中心視圖的子視圖控制器右滑可以打開左抽屜。

2、中心視圖的子視圖控制器中的TableViewCell可通過滑動手勢刪除

 

問題所在:

1、由于刪除cell的左滑手勢和MMDrawerController的打開右抽屜的左滑手勢有沖突(雖然我沒有設置右抽屜),導致左滑刪除cell的方法(當然是系統方法)時而響應時而不響應。

 

期待效果:

1、解除刪除cell的手勢沖突

2、右滑可以打開左抽屜

 

思考過程:

1、這個抽屜效果類似于手機QQ,當我們想通過滑動手勢打開手機QQ左抽屜時需要用手指在左邊框向右滑動,而從中間向右滑動卻不會產生打開左抽屜的效果。

  然而MMDrawerController默認從中心視圖控制器的任何位置右滑都可以打開左抽屜(請注意兩者之間的差別)

2、MMDrawerController中應該有一個識別手勢的方法,只要找到這個方法問題就可以得到解決。

 

解決過程:

1、在MMDrawerController文件夾下的各個.m文件中通過command+F搜尋GestureRecognizer,最終在MMDrawerController這個類中找到

-(MMOpenDrawerGestureMode)possibleOpenGestureModesForGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer withTouch:(UITouch*)touch;這個方法

2、在這個方法中找到了PointContainedWithinCenterViewContentRect: 這個判斷條件,按住command點擊后跳到它所在的位置,在這里找到了問題所在。解決方式如下:

 

MMDrawerController.m   中1460行

-(BOOL)isPointContainedWithinCenterViewContentRect:(CGPoint)point{

//    CGRect centerViewContentRect = self.centerContainerView.frame;      //原文意思是把觸發抽屜的手勢識別放在整個屏幕中

    CGRect centerViewContentRect = CGRectMake(0, 0, 50, self.centerContainerView.frame.size.height);  //修改后的意思是把觸發打開抽屜手勢識別放在屏幕左側寬50,高為屏幕高度的rect中

    centerViewContentRect = CGRectIntersection(centerViewContentRect,self.childControllerContainerView.bounds);

    return (CGRectContainsPoint(centerViewContentRect, point) &&

            [self isPointContainedWithinNavigationRect:point] == NO);

}

 

由于沒有拿右側抽屜做測試,代碼注釋也是按照個人理解,可能有些不妥,但是按照上面的方式解決左右抽屜手勢和中心視圖子視圖控制器手勢的沖突問題應該輕而易舉。

 


上一篇:autorelease方法

下一篇:類的本質

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安康市| 武义县| 田林县| 德清县| 都江堰市| 迁西县| 英山县| 营山县| 丰宁| 安丘市| 安图县| 卓资县| 措美县| 修武县| 永修县| 车致| 湘乡市| 高碑店市| 西城区| 文登市| 土默特右旗| 沂南县| 邵东县| 德阳市| 澎湖县| 达拉特旗| 宜昌市| 苍溪县| 进贤县| 衡阳市| 永安市| 呼玛县| 柯坪县| 青川县| 永春县| 宜川县| 怀安县| 财经| 凉城县| 锦州市| 满城县|