我的 UITableView
单元格中有一个 UIWebView
。但是,当我滚动 UIWebView
时,UITableView
也会滚动。当用户尝试滚动它时,如何确保只有一个 UIWebView
滚动?
最佳答案
This Question has not been answered yet so i am posting my answer so late .
我有同样的问题,我通过创建自定义委托(delegate)解决了。按照以下步骤操作。
1. 在您的 UITableViewCell
@protocol MyTableCellDelegate <NSObject>
-(void)webViewDidStartedScrolling;
-(void)webViewDidStoppedScrolling;
@end
2. 在您的TableCell.h
文件中添加UIScrollViewDelegate
@interface TableCell : UITableViewCell<UIWebViewDelegate,UIScrollViewDelegate>
property(weak,nonatomic) id<MyTableCellDelegate> delegateWebView;
3. 在您的 TableCell.m
文件中
- (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
,您的 TableView 所在的位置。
@interface UIViewController ()<UITableViewDelegate,UITableViewDataSource,MyTableCellDelegate>
5. 在您的 UIViewController.m
文件中实现您的自定义委托(delegate)方法,并启用或禁用 tableView
滚动,当你的 webviewDidEndScrolling
和 webviewDidStartedScrolling
#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;
}
这对我来说很好,我希望这能帮助面临同样问题的其他人。
关于ios - UIWebView 和 UITableView 同时滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38719581/