2016-08-02 9 views
1

私はUITableViewセルにUIWebViewを持っています。しかし、私がUIWebViewをスクロールすると、UITableViewもスクロールします。ユーザーがスクロールしようとしたときにUIWebViewがスクロールすることを確認するにはどうすればよいですか?UIWebViewとUITableViewは同時にスクロールします

+0

何も表示されません。webview.loadHTMLString(htmlString、baseURL:nil) セルのメインビューのparent.addSubview(webview)。 –

+0

これを参照すると一度役立ちます。http://stackoverflow.com/questions/6440448/ios-uiwebview-inside-a-uiscrollview –

答えて

0

webViewスクロールデリゲートが呼び出されたときに、tableViewの無効化および有効化スクロールを使用できます。 UIWebViewにはスクロールビューがあり、これを使えばデリゲートできます。

- (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

これで、最初はメインのテーブルビューをスクロールできません。 –

+0

@TheCook今すぐ試す – MCMatan

1

この質問はので、私はそう 後半に私の答えを投稿しています、まだ回答されていません。

私は同じ問題を抱えていました。私はカスタムデリゲートを作成することで解決しました。次の手順に従います。

1.あなたTableCell.hファイルにあなたのTableCell.mファイル

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

3.UIScrollViewDelegateを追加するには、UITableViewCell

@protocol MyTableCellDelegate <NSObject> 

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

@end 

でのカスタムデリゲートを作成します。

- (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.MyTableCellDelegateをテーブルビューをお持ちのUIViewController.hに追加してください。

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

5.あなた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; 
} 

これは正常に動作したときに、あなたのUIViewController.mファイルにカスタムデリゲートメソッドのメソッドを実装し、または無効tableViewスクロールを有効にします私にとっては、これが同じ問題に直面している他の人を助けることを願っています。

関連する問題