检测到MotionShake时,GPUImage不会更新

时间:2016-02-21 00:47:24

标签: xcode swift image-processing gpuimage uievent

我有一个功能,在摇动之后,将所有滑块重置为默认值,并在滑块的值更改后调用-proccesImage。实际上,问题是每个滑块都会重置为默认位置,但GPUImage不会更新视图。

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)
{
    if(event?subtype) == UIEventSubtype.MotionShake{
        for slider in sliders!
        {
            slider.value = myDefault(slider.tag);
            sliderValueChanged(slider)
        }
    } 
}

@IBAction func sliderValueChanged(sender: UISlider)
{

    switch sender.tag{
        case 1:
            filter.temperature = CGFloat(sender.value)

        case 2:
            dliter2.exposure = CGFloat(sender.value)
        case 3:
            //more cases..
        default:print("...")

    }
    gpuimage?.processImage(); // I know for a fact that this gets called, but doesn't update the view :(
}

请注意,我还有一个与UITap手势相同的功能。当用户双击滑块时,它会回到默认值并立即更新。下面的代码完全正常。

func resetSlider(sender: UITapGestureRecognizer)
{
        let tag = (sender.view?.tag)!;
        sliders![tag].value = myDefault(tag)
        sliderValueChanged(sliders![tag]);
}

1 个答案:

答案 0 :(得分:0)

所以我没有找到它没有更新的原因。但是我在removing all targets之后解决了这个问题,并在此之后调用了viewWillAppear(),以便重新添加目标,就像它是一个全新的图像一样。