我在主视图中有表格。接下来我将视图添加到上面的表格视图中,高度为100点,然后我有第一行高度为100点。接下来,我检查scrollView contentOffset以重新计算添加的视图的位置。当我滚动表格视图时,我的视图与表格视图中的第一个单元格重复。
但我有问题是: 当我想从我的视图(手指在视图中)滚动并向下滚动时,表格视图与我的手势没有交互。是的,这是正常的。如果我将用户交互设置为NO,则一切正常。但是我在此视图中有一些按钮,当我禁用用户交互时,我无法在此视图中对子视图执行操作。
如何在没有用户交互或其他方法的情况下同时/一起滚动和点按。 THX。
所有代码:
#import "ViewController.h"
@interface ViewController () <UITableViewDataSource, UITableViewDelegate>
{
UIView *someView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
tableView.dataSource = self;
tableView.delegate = self;
[self.view addSubview:tableView];
someView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
someView.backgroundColor = [UIColor redColor];
[self.view addSubview:someView];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 10;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
if (indexPath.row == 0) return 100;
else return 44;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
if (indexPath.row == 0) cell.backgroundColor = [UIColor greenColor];
}
return cell;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
someView.center = CGPointMake(someView.center.x, -scrollView.contentOffset.y+50);
}
答案 0 :(得分:1)
尝试在主视图上添加按钮
- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event{
for(UIView *subview in self.subviews){
if([subview pointInside:point withEvent:event]){
return YES;
}
}
return NO;
}
在这种情况下,表格不会仅在按钮
下面进行交互第二种方式是为someView和override方法创建子类pointInside:
{{1}}