IOS升级到13后发现左划的自定义按钮不存在了,但是事件依旧可以响应

今天,升级到IOS13后,发现原来的左划按钮,不存在了,但是按钮位置的时间响应确实存在的。

经过输出日志,定位问题终于发现了原因。

原来关键绘制左划自定义按钮代码如下:

 for (UIView *subview in self.tableView.subviews) {
                NSLog(@"for (UIView *subview in self.tableView.subviews) %@",subview);
                
                
                if ([subview isKindOfClass:NSClassFromString(@"UISwipeActionPullView")] && [subview.subviews count] >= 1) {
                    NSLog(@"if [subview isKindOfClass:NSClassFromString(@\"UISwipeActionPullView\")] && [subview.subviews count] >= 1");
                    if (self.status == 2) {
                        
                        NSLog(@"if (self.status == 2)");
                        
                        UIButton *deleteButton = subview.subviews[1];
                        UIButton *editButton   = subview.subviews[0];
                        [self configDeleteButton:deleteButton];
                        [self configEditButton:editButton];
                    } else {
                        NSLog(@"if (self.status != 2)");
                        UIButton *deleteButton = subview.subviews[0];
                        [self configDeleteButton:deleteButton];
                    }
                }
            }

但是升级到IOS13后,发现IOS13多了一层_UITableViewCellSwipeContainerView。并且在IOS13中UISwipeActionPullView位于_UITableViewCellSwipeContainerView层上面。找到原因,增加一层遍历就可以了。具体代码如下:

 for (UIView *subview in self.tableView.subviews) {
                NSLog(@"13 for (UIView *subview in self.tableView.subviews) %@",subview);
                
                
                if ([subview isKindOfClass:NSClassFromString(@"_UITableViewCellSwipeContainerView")] && [subview.subviews count] >= 1) {
                    NSLog(@"if [subview isKindOfClass && [subview.subviews count] >= 1");
                    
                    for (UIView *subview0 in subview.subviews){
                        NSLog(@"130  %@",subview0);
                        
                        if ([subview0 isKindOfClass:NSClassFromString(@"UISwipeActionPullView")] && [subview0.subviews count] >= 1){
                            NSLog(@"132 UISwipeActionPullView");
                            if (self.status == 2) {
                                
                                NSLog(@"if (self.status == 2)");
                                
                                UIButton *deleteButton = subview0.subviews[1];
                                UIButton *editButton   = subview0.subviews[0];
                                [self configDeleteButton:deleteButton];
                                [self configEditButton:editButton];
                            }else {
                                NSLog(@"if (self.status != 2)");
                                
                                UIButton *deleteButton = subview0.subviews[0];
                                [self configDeleteButton:deleteButton];
                            }
                            
                        }
                        
                        
                        
                        
                    }
                    
                    
                    
                }
            }

经过测试,问题解决。由于IOS13刚发布,希望对于,其他同事的类似问题可以提供参考。

 

你可能感兴趣的:(IOS)