ios - 检测什么类型的事件触发了 UIControl 的操作

标签 ios objective-c cocoa-touch uicontrol

我有一个带有操作方法回调的自定义 UIControl 子类。我想在调整时在 UILabel 上显示控件元素的值,然后我希望在用户停止调整控件时隐藏标签。

因此,我连接了 UIControlEventValueChangedUIControlEventTouchUpInside 的操作。两者都成功调用了我的操作方法。但是,要根据操作在此方法中执行不同的操作,我需要知道哪个事件触发了该方法。我怎样才能做到这一点?我查看了 UIControl,但没有看到明显的属性。 state 似乎为这两个操作返回 1

所以像这样:

    - (void)handleSlider1:(CustomSlider*)sender {

        if (sender.state == UIControlEventValueChanged) {
            // code
        } else {
            // different code
        }
    }

最佳答案

通过将它们分别连接到单独的 IBAction,您可以很容易地区分这两个事件。然后每个新操作都会调用您的单个处理程序,同时传递适当的 UIControlEvent 值:

- (IBAction)sliderValueChanged:(CustomSlider *)slider
{
    [self handleSlider1:slider forEvent:UIControlEventValueChanged];   
}

- (IBAction)sliderValueChanged:(CustomSlider *)slider
{
    [self handleSlider1:slider forEvent:UIControlEventTouchUpInside];   
}

- (void)handleSlider1:(CustomSlider *)sender forEvent:(UIControlEvents)event
{
    if (event == UIControlEventValueChanged)
    //...
}

关于ios - 检测什么类型的事件触发了 UIControl 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470194/

相关文章:

ios - -canOpenURL : failed for URL: "fbauth2:/" - error: "(null)"

ios - NSURLSession 将 token 发送回服务器以获取数据

objective-c - 如何控制NSNumberFormatter的科学风格?

ios - 检查数组是否存在于 JSON 文件中 - iOS

cocoa-touch - UILabel UITextField UITextView

ios - 按下另一个 View Controller 时, Root View Controller 的 View 消失

ios - Unmanaged.passUnretained(self).toOpaque() 到 Swift 3

iphone - 找出用户是否按下了 uinavigationcontroller 中的后退按钮?

c++ - 在头文件中声明和初始化常量

ios - 如何以编程方式添加具有可变高度和布局 ios 的 UILabel