gpt4 book ai didi

ios - UITapGestureRecognizer 干扰 UISlider

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:51 24 4
gpt4 key购买 nike

我遇到了一个手势相关的问题,有点类似于:gesture-problem-uiswipegesturerecognizer-uislider

但是我用 swift 编写代码,所以我需要一个 swift 的解决方案。

我的项目中发生的事情是这样的:我有一个 ViewController,用户在屏幕上点击它,将执行 segue。但是我在这个 View Controller 上有一个 UISlider,当用户“释放” slider 时,它有时(为什么有时而不总是,让我感到困惑)被识别为屏幕上的点击。

所以我知道我必须防止手势识别器“看到/识别”触摸 UIslider

但是我该如何防止呢? (在 swift 2.0 中,使用 Xcode7。但如果你在答案中使用早期的 swift 编码,我也能理解)我对快速编码还很陌生。我希望有人能提供帮助!

这是 View Controller 中的代码:

// The slider 
@IBOutlet weak var sliderValue: UISlider!

@IBAction func sliderValueChanged(sender: UISlider) {
// Do stuff
}

// UITapGestureRecognizer
override func viewDidLoad() {
super.viewDidLoad()

let touch = UITapGestureRecognizer(target: self, action: "touched:")
self.view.addGestureRecognizer(touch)
}

// Perform Segue
func touched (_: UIGestureRecognizer) {

//Segue to another viewcontroller
performSegueWithIdentifier("nice", sender: self)

}

(编辑:)我用我在 stackoverflow 上找到的信息更新了我的代码。我添加了 UIGestureRecognizerDelegate:

    class LampOn: UIViewController, UIGestureRecognizerDelegate {...}

我添加了shouldReceiveTouch:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {

gestureRecognizer.delegate = self
if (touch.view == sliderValue){
print("touching slider")
return false
}
else{
print("touching elsewhere")
return true
}

}

但是“shouldReceiveTouch”函数永远不会从控制台调用。那我错过了什么?我是否正确设置了委托(delegate)?

最佳答案

“shouldReceiveTouch”函数永远不会被调用,因为您在“shouldReceiveTouch”函数中设置了委托(delegate)。在调用函数之前,需要将委托(delegate)设置为 self。

您需要做的是在 viewDidLoad() 中设置委托(delegate),一切都应该没问题。

override func viewDidLoad() {
super.viewDidLoad()

let touch = UITapGestureRecognizer(target: self, action: "touched:")
self.view.addGestureRecognizer(touch)
touch.delegate = self
}

关于ios - UITapGestureRecognizer 干扰 UISlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com