UIWebView和UITableView同时滚动

时间:2016-08-02 11:46:09

标签: ios objective-c swift xcode

我的UIWebView单元格中有一个UITableView。但是,当我滚动UIWebViewUITableView滚动时。当用户尝试滚动它时,如何确保只有一个UIWebView滚动?

2 个答案:

答案 0 :(得分:2)

  

此问题尚未得到解答,所以我发布了我的回答   迟到了。

我遇到了同样的问题,我解决了创建自定义委托的问题。请按照以下步骤操作。

1。UITableViewCell

中创建自定义代理
@protocol MyTableCellDelegate <NSObject>

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

@end

2。UIScrollViewDelegate文件中添加TableCell.h

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

中的

3。

- (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. UIViewController.m文件中实施自定义委托方法的方法,启用禁用 {{1滚动,当您的tableViewwebviewDidEndScrolling

webviewDidStartedScrolling

这对我来说很好,我希望这会帮助那些面临同样问题的人。

答案 1 :(得分: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;
}