自定义 UISlider:拖动到外部时避免更新

2023-12-31

我对 iPhone 开发还很陌生,我正在构建我的第一个应用程序:) 在我的一个视图控制器中,我构建了一个 customSlider,它应该充当本机“滑动解锁”滑块。

我现在的疑问是如何实现“拖到外面”的行为。如前所述,我希望它与本机滑块完全相同,这意味着当手指拖动滑块时,如果它移出滑块,滑块应该为零。

我的疑问不是动画部分(我已经成功使用动画块),而是控制事件部分。我应该使用哪个控制事件?

我在用着:

[customSlider addTarget:self action:@selector(sliderMoved:) forControlEvents:UIControlEventValueChanged];

处理滑动部分(手指滑动光标),以及

[customSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventTouchUpInside];

处理释放部分,但问题是,如果我在外面释放手指,则不会调用 sliderAction 函数。

编辑: 我试图实现 @Bruno Domingues 给我的解决方案,但我意识到问题是默认情况下 UISlider 会不断更新,即使手指被拖动到它之外(尝试打开例如系统中的亮度部分)首选项,您会看到滑块将继续更新,即使您将其拖动到其外部)。所以我的问题可以重新定义:如何避免这种默认行为并仅当手指在滑块上移动时才更新滑块?


只需中断自定义子类中的触摸方法,然后仅将您想要执行的触摸转发到超类,如下所示:

in .h:

@interface CustomSlider : UISlider
@end

in .m:

#import "CustomSlider.h"
@implementation CustomSlider
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    CGPoint touchLocation = [[touches anyObject] locationInView:self];
    if (touchLocation.x < 0 || touchLocation.y<0)return;
    if (touchLocation.x > self.bounds.size.width || touchLocation.y > self.bounds.size.height)return;
    [super touchesBegan:touches withEvent:event];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    CGPoint touchLocation = [[touches anyObject] locationInView:self];
    if (touchLocation.x < 0 || touchLocation.y<0)return;
    if (touchLocation.x > self.bounds.size.width || touchLocation.y > self.bounds.size.height)return;
    [super touchesMoved:touches withEvent:event];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    CGPoint touchLocation = [[touches anyObject] locationInView:self];
    if (touchLocation.x < 0 || touchLocation.y<0)return;
    if (touchLocation.x > self.bounds.size.width || touchLocation.y > self.bounds.size.height)return;
    [super touchesEnded:touches withEvent:event];
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
    CGPoint touchLocation = [[touches anyObject] locationInView:self];
    if (touchLocation.x < 0 || touchLocation.y<0)return;
    if (touchLocation.x > self.bounds.size.width || touchLocation.y > self.bounds.size.height)return;
    [super touchesCancelled:touches withEvent:event];
}
@end

请注意,如果您的手指移回控件,此实现将开始更新控件。为了消除这种情况,如果在视图之外接收到触摸,只需设置一个标志,然后在后续触摸方法中检查该标志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 UISlider:拖动到外部时避免更新 的相关文章

  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 使用 AFNetworking 的 setImageWithURL 时如何配置缓存

    我在用着setImageWithURL在我的应用程序中下载一些图像 是否可以 指定此图像必须在缓存中保存多长时间 例如 1 周 指定缓存的最大总大小有多大 例如 200 兆 查看图像缓存中有什么 清除缓存 文档 http engineeri
  • iPhone - ShareKit 、 SHKm 给出“找不到文件”的编译器错误

    我在使用 ShareKit Integrated 编译我的 iphone 项目时遇到了这个问题 我正在研究这个问题 到目前为止一切都工作正常 突然现在它给了我错误 在 SHK m 文件中 import include objc objc c
  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • iphone:通过代码获取目标设置中的用户定义变量?

    我的项目有多个目标 每个目标都有自己的目标Class用于设置内容的文件 我想存储它Class目标设置中的名称 Info plist或目标的建筑物设置 这样我就可以根据此设置定义每个目标中需要使用哪个类 根据这个问题 https stacko
  • 自动布局:Y 位置为两个值中的最大值

    我有一个按钮 play Button 和两个 UIView myView 1 和 myView 2 它们的位置在执行过程中可能会发生变化 我希望 playButton 的顶部比 UIView 1 的底部或 UIView 2 的底部低 10
  • 为什么单个 Vec4 乘法会大大减慢我的 ogl es 2 片段着色器的速度?

    我正在为 iOS 设备编写 2D OpenGL 游戏 现在 我正在研究 iPad 第一代 上的性能 该游戏有 ogl 1 1 和 2 0 的代码路径 我可以通过 define 使用 ogl 2 0 时 分析器告诉我 我的渲染器利用率 相当稳
  • iPhone,使用 isKindOfClass 是否被认为是不好的做法?

    例如 如果有一个 处理所有 类型的方法 if obj isKindOfClass class1 else if obj isKindOfClass class2 etc 这是不好的做法吗 是否有更简洁的替代方案或更好的方法来构建代码 在运行
  • iOS:弃用 AudioSessionInitialize 和 AudioSessionSetProperty

    我对 Objective C 很陌生 正在尝试更新一些大约 3 年前的代码以与 iOS 7 一起使用 有两两个实例AudioSessionSetProperty and AudioSessionInitialize出现在代码中 1 void
  • iOS Swift 检测键盘事件

    我能以某种方式检测来自 iOS 键盘的事件吗 我想检测此类事件UIViewController哪个没有UITextField或任何此类物体 我只有四个圆圈UIView我想在按下键盘上的按钮时将它们涂成不同的颜色 您没有任何对象可以从键盘获取
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • SecItemAdd 创建两个身份

    我正在为 iPhone 开发一个应用程序 需要证书来调用某些服务 因此我将证书添加到我的钥匙串中 执行以下操作 SecCertificateRef cert SecCertificateCreateWithData NULL bridge
  • 通过 iPhone 连接到 AT&T 无线网络的谷歌静态地图无法工作 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近 当我的 iPhone 连接到 AT T 无线网络时 我在检索静态地图时遇到了问题 但是 当我连接到本地 WiFi 时工作正常 上周日停止工作了几
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p

随机推荐

  • Vagrant 网络与非 Hostonly 网络发生冲突

    我正在尝试启动并运行一个流浪盒子 但我不断收到网络冲突错误 这个盒子是trusty64的全新下载 我一直在搜索与 vagrant 相关的每个文件和文件夹 试图找到指定 IP 的内容 但我找不到 我在 Windows 7 机器上运行 vagr
  • 如何在 MySQL 中解释带参数的查询

    我有一个疑问 SELECT foo FROM bar WHERE some column 我可以从 MySQL 获取解释计划而不填写参数值吗 只要您只执行 equals 而不是 like 这可能会产生短路影响 只需将其替换为一个值 EXPL
  • 如何在我的 iOS 应用程序中正确实现 Services 类?

    我当前的困惑是 专门为我的 Rails 应用程序的服务调用实现一个模型类 这是场景 我有一个名为Service这是 NSObject 的子类 实现文件定义了一些方法 让我们看看doSignUp 我在用AF网络与 api 进行通信 From
  • Windows Phone 8.1:检查互联网连接

    我如何知道手机是否有互联网连接 无论是 WiFi 还是数据 有时手机会连接到 WiFi 但没有像 HotSpots 这样的互联网连接 所以我想要一个代码来知道手机是否连接到互联网 您可以简单地尝试 if NetworkInformation
  • 使用 Android Studio 创建自定义视图

    我正在尝试在 Android Studio 中创建一个可以将其从右向左拖动的小视图 该视图将有 2 个按钮 当您选择其中之一或按其外部时 小菜单将再次隐藏 我一直在寻找 但没有任何图书馆可以做类似的事情 我也不知道该怎么做 我可以在单独的视
  • 自定义微调器:setSelection 向下滚动

    我有一个自定义微调器 我有一个提示标签位于数组 微调器 的最后一个位置 因此为了显示它 我将选择设置为最后一个位置 如下所示 ArrayAdapter myAdapter new MySpinnerAdapter this R layout
  • RESTful 服务能否根据请求标头返回同一资源的 JSON 和 XML?

    我有一个简单的 RESTful 方法 当前返回对象的 JSON 表示形式 我的问题更多是从架构的角度来看的 而不是完全技术性的 RESTful 服务是否应该设计为同时返回 JSON 和 XML 据我所知 这是一种不好的做法 应该为此定义单独
  • dll大小(调试和发布)

    我在其他讨论中读到 与调试 dll 相比 Release dll 的大小减小了 但为什么我制作的dll大小却相反 Release dll比Debug dll大 会引起问题吗 它不会引起问题 可能是编译器在发布版本中 内联 更多项目并创建更大
  • 淘汰组件或模板性能提升

    我有一个可观察的数组 对于每个数组元素 我生成一些 html 表单 非常扩展 因为可观察数组项是依次具有可观察值的大对象 var records ko observableArray p1 ko observable initProp1 p
  • 什么是 Future 以及如何使用它?

    我收到以下错误 A value of type Future
  • SELECT 符合条件的行前后N行?

    我想要复制的行为就像 grep with A and B旗帜 例如grep A 2 B 2 hello myfile txt会给我所有包含 hello 的行 还有它之前的两行和之后的两行 让我们假设这个表模式 id message 1 On
  • 从不同的文件夹加载 DLL 引用?

    我有一个引用 DLL 的 NET 控制台应用程序 如果 DLL 与 EXE 位于同一文件夹中 它运行正常 但我想将 DLL 放在不同的文件夹中 我怎样才能做到这一点 If the DLL位于子文件夹中 您可以将此文件夹添加到AppDomai
  • 点击与其关联的表格行时如何选择地图图钉?

    这里我有2个看法 墙视图控制器 表视图控制器 墙视图控制器包含 MKMapView 以及表视图控制器是一个子类PFQueryTableViewController显示与注释固定关联的内容行墙视图控制器 表视图控制器添加为子视图墙视图控制器
  • Haskell:lift 与 liftIO

    在什么情况下应该liftIO使用 当我使用时ErrorT String IO the lift函数的作用是将 IO 操作提升为ErrorT so liftIO似乎是多余的 lift总是从 上一层 升起 如果需要从第二层提升 则需要lift
  • 使用异步 Session_Start 方法时出现会话问题?

    我最近开始使用 NET 4 5 而不是 NET 4 0 我很喜欢async特征 但是 当我在 Global asax 的 Session Start 事件中的 ASP NET 中使用它时 无论我做什么 如果我执行等待并访问会话 都会导致错误
  • 使用 Rx 运行直方图流

    我有以下单字母流 A B C A D B A C D 从这个流中 我想要一个每个字母的运行计数流 A 1 A 1 B 1 A 1 B 1 C 1 A 2 B 1 C 1 A 2 B 1 C 1 D 1 A 2 B 2 C 1 D 1 A 3
  • 为什么as_const的const&&重载被删除了?

    On a 有关 C 17 进展的博客 http talesofcpp fusionfenix com post 23 interlude我读了以下内容 P0007提出了一个辅助函数模板as const 这只是 接受一个引用并将其作为引用返回
  • python库查找图像轮廓

    我正在使用 Python 和 PyQt4 我正在寻找一个库 可以使用它找到图像 位图 的轮廓路径 对于 轮廓路径 我指的是一个多边形 它将图像中间的填充 非透明 像素与周围的透明像素分开 我无法通过谷歌找到任何东西 这让我怀疑我是否使用了正
  • Kubernetes - 集群外部 TCP 连接的不同“服务”[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Azure Kubernetes 服务 AKS 并且我只需要用于 TCP 连接的服务 我根本不需要 HTTP 我认为强调这
  • 自定义 UISlider:拖动到外部时避免更新

    我对 iPhone 开发还很陌生 我正在构建我的第一个应用程序 在我的一个视图控制器中 我构建了一个 customSlider 它应该充当本机 滑动解锁 滑块 我现在的疑问是如何实现 拖到外面 的行为 如前所述 我希望它与本机滑块完全相同