Происходит следующее: когда UITableViewCell показывает элемент управления переупорядочением, он также добавляет пустой массив UIView белого цвета шириной 1 пиксель в свой массив подпредставлений.
Прямо: это ошибка, которую Apple должна исправить.
Однако вы можете обойти его, находя этот раздражающий вид каждый раз, когда он появляется, и устанавливая его цвет фона на прозрачный. Быстрый совет : надоедливый белый вид всегда является последним в массиве подпредставлений UITableViewCell и всегда имеет ширину 1 пиксель. Мы будем использовать это, чтобы найти его.
Когда вы включаете редактирование для таблицы, сделайте все видимые раздражающие 1-пиксельные представления прозрачными. Таким образом, метод действия, который переключает режим редактирования таблицы, может выглядеть следующим образом:
- (IBAction)edit:(id)sender
{
[tableView setEditing:!tableView.editing animated:YES];
for (UITableViewCell *cell in [tableView visibleCells])
{
if (((UIView *)[cell.subviews lastObject]).frame.size.width == 1.0)
{
((UIView *)[cell.subviews lastObject]).backgroundColor =
[UIColor clearColor];
}
}
}
и продолжайте делать это для всех новых представлений, когда они становятся видимыми, реализуя это в вашем UITableViewDelegate:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell]
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (((UIView *)[cell.subviews lastObject]).frame.size.width == 1.0)
{
((UIView *)[cell.subviews lastObject]).backgroundColor =
[UIColor clearColor];
}
}
Этот хак для исправления проблемы довольно безобиден, и если Apple исправит ошибку в будущем (прекратит добавлять раздражающее 1-пиксельное представление), этот код должен спокойно перестать делать что-либо.