上下滾動(dòng)沖突
想實(shí)現(xiàn)以下tableview+scrollview,scrollview是最底層。Segment和TableView是都是單獨(dú)寫好的,都可以左右滑動(dòng)。最上面是一個(gè)header部分,內(nèi)容不變的,回顯示一些圖片什么的。想做到tableview向上滑動(dòng)的時(shí)候header部分頁(yè)上移,以便給下面的顯示提供更多空間。上移的時(shí)候navigationBar會(huì)顯示,Segment會(huì)停留,類似TableView的HeaderView。

為了實(shí)現(xiàn)這個(gè)真是搞了許久,今天突然發(fā)下原來(lái)是下面這個(gè)方法可以同時(shí)讓scrollview接收兩個(gè)事件,直接自定義一個(gè)scrollview放上這個(gè)方法就行了。參考http://blog.csdn.net/sanmaofly/article/details/12218591
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
至于到時(shí)候區(qū)分tableView和scrollView,在代理方法中判斷
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if ([scrollView isKindOfClass:[UITableView class]]){
//UITableView
}
if ([scrollView isEqual:self.scrollView]) {
//scrollView
}
{
</br>
scrollview上設(shè)置點(diǎn)擊事件和scrollview上的tableview的選中方法沖突
一般出現(xiàn)在有選擇功能的頁(yè)面, 頁(yè)面本身肯定是scrollview的, 又想設(shè)置點(diǎn)擊scrollview空白處收起選項(xiàng)卡或者鍵盤, 又想選項(xiàng)卡可以點(diǎn)擊選擇(選項(xiàng)卡tableview), 這時(shí)候scrollview的點(diǎn)擊事件就會(huì)跟tableview的didselect方法沖突了, 造成didselect代理方法不執(zhí)行而只執(zhí)行scrollview的點(diǎn)擊事件方法.
解決方法:
為scrollview的點(diǎn)擊手勢(shì)設(shè)置代理self
在文件中實(shí)現(xiàn)UIGestureRecognizerDelegate中的
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
代碼如下:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// 輸出點(diǎn)擊的view的類名
// 若為UITableViewCellContentView(即點(diǎn)擊了tableViewCell),則不截獲Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"])
{
return NO;
}
//截獲Touch事件
return YES;
}