`
啸笑天
  • 浏览: 3465796 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

UIPanGestureRecognizer手势影响UISlider拖动的问题及解决办法

 
阅读更多

最近在使用UISlider控件控制音频播放进度时,遇到一个问题,即:UISlider所在的UIView上已经添加了UIPanGestureRecognizer类型手势,用来处理向右拖动整个View时取消显示,但这样一来,拖动UISlider就变成了响应手势,而无法正常使用UISlider。

经过一番查找资料和尝试,问题得到解决,方法如下:

给UIPanGestureRecognizer添加代理(UIGestureRecognizerDelegate),UIGestureRecognizerDelegate中有一个方法:

 

        -(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch;

在进入手势识别事件之前,先进入该方法,对那些不需要响应手势事件的事件(如拖动UISlider),可以通过返回一个NO型布尔值不响应手势识别;而对于需要响应手势识别的情况,只需要返回一个YES就可以。

下面举例说明:

首先添加手势识别,并给手势识别指定代理

⋯⋯

  UIPanGestureRecognizer* panRecognizer = [[UIPanGestureRecognizer allocinitWithTarget:selfaction:@selector(handlePanGesture:)];

   [panRecognizer setMaximumNumberOfTouches:1];

    [panRecognizer setDelaysTouchesBegan:TRUE];

   [panRecognizer setDelaysTouchesEnded:TRUE];

    [panRecognizer setCancelsTouchesInView:TRUE];

    //为手势识别器设置代理

    panRecognizer.delegate = self;

    [self.view addGestureRecognizer:panRecognizer];

    [panRecognizer release];

⋯⋯

然后,实现UIGestureRecognizerDelegate的方法:

 

// 当拖动UISlider时会被误认为是手势,所以在这个判断一下

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {

    if([touch.view isKindOfClass:[UISlider class]])

        return NO;

    else

        return YES;

}

 

ps其他手势其他控件以此类推

分享到:
评论

相关推荐

    IOS手势拖拽滑块

    "iOS手势拖拽滑块"这一主题,主要关注的是如何利用手势控制滑块进行拖拽操作,并可选择性地设置滑块在拖动后是否弹回到界面边框。这种功能常见于音乐播放器、音量调节等场景,提供了直观且易于使用的用户输入方式。 ...

    Slider加滑动手势

    在这个特定的案例中,我们讨论的是一个封装了滑动手势的Slider,它在Slider上放置了一个图片,并且支持用户通过拖动或点击来进行选择。这种设计增加了交互性和用户体验。 首先,让我们深入了解一下`UISlider`的基本...

    iPhone类似文件查看标题栏的小控件

    2. **滑动手势**:描述中提到的“红色间隔可以拖动”,这可能是用于分隔不同功能区域的一个可移动的视图,比如UISlider或者自定义的手势识别。为了实现拖动效果,我们可以添加UIPanGestureRecognizer,监听手势的...

    iOS 实现滑块解锁功能

    - 添加`UIPanGestureRecognizer`监听滑动手势,这样可以更灵活地控制滑块的移动,而不局限于`UISlider`本身的拖动行为。 - 通过监听手势的改变,更新滑块的位置,确保滑块的移动与用户的手势同步。 4. **动画效果...

    ios-左右滑动选年龄,选价格.zip

    "ios-左右滑动选年龄,选价格.zip" 是一个专为解决此类选择问题的Demo项目,它利用手势滑动代替传统的按钮方式,提供了更加流畅和直观的用户体验。 该Demo的核心功能是滑动选择器,它允许用户通过左右滑动手势来...

    ios-slider固定宽度滑动.zip

    5. **事件处理**:添加手势识别器(如`UIPanGestureRecognizer`)监听滑动操作,当滑动时更新滑杆的值,并相应地更新界面显示。也可以直接使用`UISlider`的内置事件,如`valueChanged`代理方法。 6. **布局适配**:...

    ios应用源码之颜色拾取器 20181210

    在iOS开发中,颜色拾取器(Color Picker)是一个常见的组件,它允许用户从一个颜色板中选择所需的颜色。这个“ios应用源码之颜色拾取器”项目...同时,这个源码也可以作为参考,帮助解决在实际项目中遇到的类似问题。

    ios-星星评论可点击可拖拽.zip

    开发者可能添加了手势识别器(Gesture Recognizer),比如`UIPanGestureRecognizer`来检测用户的滑动动作,并监听`UIControlEventValueChanged`事件来处理点击事件。 3. **代理方法**:为了让应用其他部分能够响应...

    ios-简单绘图.zip

    此外,项目可能还包含手势识别,如UIPanGestureRecognizer或UIPinchGestureRecognizer,以便检测用户的触摸动作,根据用户的拖动或捏合来控制绘图或缩放。这些手势识别器与`DrawView`的交互,会更新绘图状态并调用`...

    iOS游戏应用源代码——elc-ELCSlider-2862d66.zip

    6. **滑动手势识别**:为了精确地识别滑动手势,ELCSlider可能实现了自己的手势识别逻辑,这可能涉及到`UIPanGestureRecognizer`的使用。 7. **扩展功能**:除了基本的滑动功能,ELCSlider可能还提供了额外的功能,...

    IOS应用源码——一个比较完整的涵盖多种控件和效果的demo.zip

    开发者可能会在源码中看到如UIPanGestureRecognizer(拖动)、UITapGestureRecognizer(点击)、UIPinchGestureRecognizer(捏合缩放)等手势的实现。 4. **动画效果**:iOS提供了Core Animation框架,可以创建丰富...

    iOS开发 模仿微信图片裁剪

    3. 滑块或手势识别器(UISlider或UIPanGestureRecognizer):用于调整裁剪比例,如1:1、4:3等。 4. 确认和取消按钮:让用户可以确认裁剪结果或返回。 接下来是核心的图像处理部分。在iOS中,Core Graphics和Core ...

    swift-AppleAlarm-模仿苹果时钟时间选择工具

    因此,你需要添加`UIPanGestureRecognizer`来识别和处理这些手势。滑动手势的代理方法会根据滑动距离更新时间值。 5. **KVO(Key-Value Observing)**:为了实时更新界面中的时间显示,可以利用Swift的KVO机制来...

    ios应用源码之一个完整的功能比较全的pdf阅读器 2018127

    4. **手势识别**:为了让用户可以轻松地滚动、放大和缩小页面,源码中可能会实现多种手势识别,如`UIPanGestureRecognizer`(拖动)、`UIPinchGestureRecognizer`(捏合)和`UIRotationGestureRecognizer`(旋转)。...

    IOS应用源码之一个简单的图片编辑器 .rar

    同时,使用UIPanGestureRecognizer和UIRotationGestureRecognizer可以实现手势驱动的图片旋转和拖动。 5. MVC设计模式: iOS应用通常遵循Model-View-Controller(MVC)设计模式。在这个图片编辑器中,模型可能包含...

    CustomSlider:使用 swift 创建 customSlider

    在iOS开发中,滑块(Slider)是一种常见的UI控件,用于用户选择一个...在实际操作中,可能会遇到更多的细节问题,如滑块的触摸区域计算、滑动速度控制等,但只要掌握了上述基础知识,解决这些问题就变得相对容易了。

    实现画正方形的功能源码下载

    例如,可以添加UIPanGestureRecognizer来拖动改变正方形的位置,UISlider来调节大小或透明度。 6. 绑定数据:在实际应用中,这些自定义属性通常会与界面元素绑定,如UILabel或UISlider,当用户改变这些元素时,对应...

Global site tag (gtag.js) - Google Analytics