UITableView坚持iOS8

时间:2014-10-09 18:08:39

标签: ios objective-c uitableview

我在应用中有一个UITableView,您可以用手指向上和向下滚动。已更新为iOS8的用户告诉我它现在正在坚持并且不会向上或向下滚动。它似乎是随机的。有时它会起作用,有时却不起作用。通过移动到不同的视图并返回有时解锁它。

UITableView填充了UIButtons数组(如下所示)。它在iOS7中完美运行。 iOS8中是否有一些我不知道的变化?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
if (cell ==nil)
{
    cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

/ *这是建立按钮的人的例子。实际上制作了5个按钮* /

UIButton* button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button1 setFrame:CGRectMake(0,0,160, 160)];
[button1 setBackgroundImage:[UIImage imageNamed:@"Button1.png"] forState:UIControlStateNormal];
[button1 setTitleColor:[UIColor colorWithRed:19/255.0f green:73/255.0f blue:17/255.0f alpha:1] forState:UIControlStateNormal];
button1.titleLabel.font = [UIFont fontWithName:@"arial" size:24];
button1.titleLabel.textAlignment = NSTextAlignmentCenter;
button1.titleLabel.lineBreakMode = NSLineBreakByCharWrapping;
[button1 addTarget:self action:@selector(action1:) forControlEvents:UIControlEventTouchUpInside];
[button1 setTitle:@"Menu" forState:UIControlStateNormal];

/* the buttons are stored into an array*/

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:button1];
/*other buttons added to the array*/


[cell addSubview:[array objectAtIndex:indexPath.row]];

return cell;

3 个答案:

答案 0 :(得分:0)

有两件事可能:

  • 最好使用cell.contentView添加子视图
  • 您始终将子视图添加到现有单元格,而不删除之前添加的

答案 1 :(得分:0)

滚动视图中的

UIButton可能会导致滚动问题。

尝试tableView.canCancelContentTouches = YES;

如果这样做无助于尝试另外继承UITableView,则覆盖touchesShouldCancelInContentView:并返回YES

答案 2 :(得分:0)

尝试使用TapGesture而不是按钮。 我遇到了同样的问题,最后TapGesture解决了这个问题。

在iOS8中,当您在单元格上放置一个按钮时,如果按钮不够大而您尝试在手指位于按钮区域内时滚动tableView,则tableView将无法滚动。 PS:您可以尝试将按钮缩小,然后拖动按钮,您会发现它可以按照您的意愿滚动​​。