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   = subv
setOnDragListener 通常用于监听 View 的拖动事件,而左划右划属于手势事件,可以通过 GestureDetector 来监听。下面是一个示例代码: ```java public class MyView extends View { private GestureDetector mGestureDetector; public MyView(Context context, AttributeSet attrs) { super(context, attrs); mGestureDetector = new GestureDetector(context, new MyGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { return mGestureDetector.onTouchEvent(event); } private class MyGestureListener extends GestureDetector.SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { onSwipeRight(); } else { onSwipeLeft(); } result = true; } } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public void onSwipeRight() { // 处理右划事件 } public void onSwipeLeft() { // 处理左划事件 } } ``` 在这个示例代码中,MyView 继承自 View,重写 onTouchEvent 方法,在该方法中将触摸事件交给 GestureDetector 处理。在 GestureDetector 的回调函数中,判断手势是否为左右滑动,如果是,则调用 MyView 中的 onSwipeLeft 或 onSwipeRight 方法进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值