Ios UIWebView和UITableView同时滚动
我的Ios UIWebView和UITableView同时滚动,ios,objective-c,swift,xcode,Ios,Objective C,Swift,Xcode,我的UITableView单元格中有一个UIWebView。但是,当我滚动UIWebView时,UITableView也会滚动。如何确保在用户尝试滚动时只有一个UIWebView滚动?调用webView滚动委托时,可以使用tableView的禁用和启用滚动。 UIWebView内部有一个scrollView,您可以成为它的代表 - (void)setupSwip { UISwipeGestureRecognizer* swipeGesture = [[UISwipeGestureRe
UITableView
单元格中有一个UIWebView
。但是,当我滚动UIWebView
时,UITableView
也会滚动。如何确保在用户尝试滚动时只有一个UIWebView
滚动?调用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;
}
这个问题还没有得到回答,所以我现在发布我的答案
晚了
我也有同样的问题,我通过创建自定义委托解决了这个问题。按照以下步骤操作
1.在您的UITableViewCell
@protocol MyTableCellDelegate <NSObject>
-(void)webViewDidStartedScrolling;
-(void)webViewDidStoppedScrolling;
@end
3.在您的TableCell.m
文件中
@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.将MyTableCellDelegate
添加到您的UIViewController.h
表格视图中
@interface UIViewController ()<UITableViewDelegate,UITableViewDataSource,MyTableCellDelegate>
这对我来说很好,我希望这能帮助其他面临同样问题的人。没什么,我只是做webview。在单元格的主视图上加载htmlString(htmlString,baseURL:nil)parent.addSubview(webview)。看到这一点后,它会帮到你。我一开始就无法滚动主表视图。
#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;
}