IOS设备滑动事件

只要手指触摸屏幕,滑动,从屏幕离开,系统都会产生UIEvent对象类型的事件---当然包括UITouch事件
– touchesBegan:withEvent:   
当用户触摸到屏幕时调用方法
– touchesMoved:withEvent:  
当用户触摸到屏幕并移动时调用此方法
– touchesEnded:withEvent:  
当触摸离开屏幕时调用此方法

– touchesCancelled:withEvent:  当触摸被取消时调用此方法

 例子如下:

//滑动开始事件
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
{  
    UITouch *touch = [touches anyObject];  
    CGPoint pointone = [touch locationInView:self.view];//获得初始的接触点  
    self.startPoint  = pointone;  
}
//滑动移动事件
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  
{  
    UITouch *touch = [touches anyObject];  
//imgViewTop是滑动后最后接触的View
        CGPoint pointtwo = [touch locationInView:imgViewTop];  //获得滑动后最后接触屏幕的点  
        
        if(fabs(pointtwo.x-startPoint.x)>100)
        {  //判断两点间的距离  
            bMove = YES;
        } 
}  
//滑动结束处理事件
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
        CGPoint pointtwo = [touch locationInView:self.view];  //获得滑动后最后接触屏幕的点 
        if((fabs(pointtwo.x-startPoint.x)>50)&&(bMove))
        {
            //判断点的位置关系 左滑动
            if(pointtwo.x-startPoint.x>0)
            {   //左滑动业务处理
                if (clicks>0) {
                    clicks--;
                    if ([wyKPI.sortZbs count]>1) {
                        [btnRight setEnabled:YES];
                        if(clicks==0)
                        {
                            [btnLeft setEnabled:NO];
                            [btnRight setEnabled:YES];
                        }
                        [labTitle setText:[wyKPI.sortZbs objectAtIndex:(NSUInteger)clicks]];
                        [labTitle setFont:[UIFont systemFontOfSize:14.0f]];
                        [tabWyKPI reloadData];
                    }
                }
            }
            //判断点的位置关系 右滑动
            else
            {  //右滑动业务处理
                if (clicks<[wyKPI.sortZbs count]-1) {
                    clicks++;
                    if ([wyKPI.sortZbs count]>1) {
                        [btnLeft setEnabled:YES];
                        if(clicks==[wyKPI.sortZbs count]-1)
                        {
                            [btnLeft setEnabled:YES];
                            [btnRight setEnabled:NO];
                        }
                        [labTitle setText:[wyKPI.sortZbs  objectAtIndex:clicks]];
                        [labTitle setFont:[UIFont systemFontOfSize:14.0f]];
                        [tabWyKPI reloadData];
                    }
                }
            }  
        }
}

 

### 禁用iOS设备上H5页面的左右滑动事件 在H5页面中,如果需要禁用iOS设备上的左右滑动事件,可以通过监听 `touchmove` 事件并阻止其默认行为来实现。以下是具体的解决方案[^1]: ```javascript document.addEventListener('touchmove', function(event) { // 检测滑动方向是否为左右 if (Math.abs(event.touches[0].clientX - event.changedTouches[0].clientX) > Math.abs(event.touches[0].clientY - event.changedTouches[0].clientY)) { event.preventDefault(); // 阻止默认的左右滑动行为 } }, { passive: false }); ``` 上述代码通过绑定 `touchmove` 事件,检测用户触摸点的坐标变化,判断滑动方向是否为左右。如果是,则调用 `event.preventDefault()` 方法阻止默认行为[^2]。 需要注意的是,在使用此方法时,必须将事件监听器的选项设置为 `{ passive: false }`,以确保可以调用 `preventDefault()` 方法。这是因为现代浏览器为了性能优化,默认将触摸事件设置为被动模式(passive mode),在这种模式下无法阻止默认行为[^3]。 此外,也可以通过 CSS 来限制页面的滚动行为。例如,以下代码可以禁用整个页面的滚动[^4]: ```css html, body { overflow: hidden; touch-action: none; /* 禁用默认的触摸操作 */ } ``` 上述 CSS 规则通过设置 `overflow: hidden` 和 `touch-action: none` 来限制页面内容的滚动和触摸操作[^5]。 ### 注意事项 - 如果仅需禁用左右滑动而保留上下滑动,可以结合 JavaScript 动态调整事件处理逻辑。 - 在实际开发中,应充分测试不同 iOS 版本的行为差异,因为 Safari 浏览器对触摸事件的支持可能有所不同[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值