2016-08-02 94 views
1

我的UIWebView在我的UITableView單元格中。但是當我滾動UIWebView,UITableView也滾動。當用戶嘗試滾動時,如何確保只滾動一個UIWebViewUIWebView和UITableView同時滾動

+0

沒什麼特別的,我只是在cell的主視圖上做了webview.loadHTMLString(htmlString,baseURL:nil) parent.addSubview(webview)。 –

+0

看到這一次,它可以幫助你http://stackoverflow.com/questions/6440448/ios-uiwebview-inside-a-uiscrollview –

回答

0

當調用webView滾動委託時,可以使用禁用並啓用tableView的滾動。 UIWebView裏面有一個scrollView,你可以成爲我的代表。

- (void)setupSwip 
{ 
    UISwipeGestureRecognizer* swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwip:)]; 
    swipeGesture.delegate = self; 
    [self.view addGestureRecognizer:swipeGesture]; 

    self.tableView.scrollEnabled = YES 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    self.tableView.scrollEnabled = NO; 
    return YES; 
} 

- (void)didSwip:(UIGestureRecognizer*)gestureRecognizer 
{ 

} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    self.tableView.scrollEnabled = NO; 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (!decelerate) 
    { 
     self.tableView.scrollEnabled = YES; 
    } 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    self.tableView.scrollEnabled = YES; 
} 
+0

有了這個我不能在一開始就滾動主要的tableview。 –

+0

@TheCook現在嘗試 – MCMatan

1

這個問題沒有得到回答卻又如此我張貼我的答案這麼晚 。

我有同樣的問題,我解決了創建自定義委託。請按照以下步驟操作。

UITableViewCell

@protocol MyTableCellDelegate <NSObject> 

-(void)webViewDidStartedScrolling; 
-(void)webViewDidStoppedScrolling; 

@end 

2.創建自定義的委託在TableCell.m文件添加UIScrollViewDelegateTableCell.h文件

@interface TableCell : UITableViewCell<UIWebViewDelegate,UIScrollViewDelegate> 
property(weak,nonatomic) id<MyTableCellDelegate> delegateWebView; 

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    self.myWebView.scrollView.delegate=self; 
    } 

//ScrollView delegate method 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
     if(self.delegateWebView && [self.delegateWebView respondsToSelector:@selector(webViewDidStoppedScrolling)]){ 
     [self.delegateWebView webViewDidStoppedScrolling]; 
    } 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 

    if(self.delegateWebView && [self.delegateWebView respondsToSelector:@selector(webViewDidStartedScrolling)]){ 
     [self.delegateWebView webViewDidStartedScrolling]; 

    } 
} 

4.在您的UIViewController.h中添加MyTableCellDelegate您正在使用您的餐桌視圖。

@interface UIViewController()<UITableViewDelegate,UITableViewDataSource,MyTableCellDelegate> 

5.實現您的自定義委託方法的方法,您UIViewController.m文件,使禁用tableView滾動,當你webviewDidEndScrollingwebviewDidStartedScrolling

#pragma mark UItableView Delegate 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
YourTableCell *cell=[tableView dequeueReusableCellWithIdentifier:@"YourTableCell" forIndexPath:indexPath]; 
    cell.delegateDealDetails=self; 

} 
// Custom Delegate Callback method 
-(void)webViewDidStartedScrolling 
{ 
    tblDealDetails.scrollEnabled=NO; 
} 

-(void)webViewDidStoppedScrolling 
{ 

    tblDealDetails.scrollEnabled=YES; 
} 

這工作正常對我而言,我希望這能夠幫助那些面臨同樣問題的人。