3 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
UIScrollView
啟用分頁的A 將停止在其幀寬(或高度)的倍數(shù)處。因此,第一步是確定您希望頁面的寬度。使那寬度UIScrollView
。然后,設(shè)置您需要的子視圖大小,并根據(jù)UIScrollView
寬度的倍數(shù)設(shè)置它們的中心。
然后,因?yàn)橐榭雌渌?,?dāng)然,設(shè)置clipsToBounds
以NO
作為mhjoy說明?,F(xiàn)在的技巧部分是當(dāng)用戶在UIScrollView
框架范圍之外開始拖動時(shí)使其滾動。我的解決方案(當(dāng)我最近必須這樣做時(shí))如下:
創(chuàng)建一個(gè)包含其子視圖的子UIView
類(即ClipView
)UIScrollView
。從本質(zhì)上講,它應(yīng)該具有你認(rèn)為UIScrollView
在正常情況下會有的框架。放置UIScrollView
在了中心ClipView
。確保ClipView
的clipsToBounds
設(shè)定為YES
如果其寬度小于其父視圖。另外,ClipView
需要參考一下UIScrollView
。
最后一步是覆蓋- (UIView *)hitTest:withEvent:
內(nèi)部ClipView
。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { return [self pointInside:point withEvent:event] ? scrollView : nil;}
這基本上擴(kuò)展了UIScrollView
其父視圖框架的觸摸區(qū)域,正是您所需要的。
另一種選擇是子類化UIScrollView
并覆蓋它的- (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
方法,但是你仍然需要一個(gè)容器視圖來進(jìn)行剪切,并且可能很難確定何時(shí)YES
僅根據(jù)UIScrollView
框架返回。
注意: 您還應(yīng)該查看Juri Pakaste的hitTest:withEvent:修改如果您遇到子視圖用戶交互問題。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
ClipView
上面的解決方案對我有用,但我不得不做一個(gè)不同的-[UIView hitTest:withEvent:]
實(shí)現(xiàn)。Ed Marty的版本沒有讓用戶交互處理垂直滾動視圖我在水平滾動視圖中。
以下版本對我有用:
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{ UIView* child = nil; if ((child = [super hitTest:point withEvent:event]) == self) return self.scrollView; return child;}

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
設(shè)置scrollView的幀大小,因?yàn)槟捻撁娲笮⑹牵?/p>
[self.view addSubview:scrollView];[self.view addGestureRecognizer:mainScrollView.panGestureRecognizer];
現(xiàn)在你可以平移self.view
,滾動滾動上的內(nèi)容。
還用于scrollView.clipsToBounds = NO;
防止剪切內(nèi)容。
- 3 回答
- 0 關(guān)注
- 585 瀏覽
添加回答
舉報(bào)