Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
498 views
in Technique[技术] by (71.8m points)

uigesturerecognizer - Tap gesture (gesture began) not recognised in Swift

UITapGestureRecogniser began state is not recognised, only ended is recognised.

override func viewDidLoad() {
     let tapgr = UITapGestureRecognizer(target: self, action: #selector(tapTrigger(recongizer:)))
     bottomBar.addGestureRecognizer(tapgr)
}

@objc func tapTrigger(recongizer: UITapGestureRecognizer){
        if recongizer.state == .began{
            print("recognised") // does not print
        }else if recogniser.state == .ended{
           print("ended") //prints
        }
}

What I am trying to do is highlight a view(not the view the recogniser is added) when a touch is recognised and unhighlight when it is cancelled.

question from:https://stackoverflow.com/questions/65930861/tap-gesture-gesture-began-not-recognised-in-swift

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Instead of using UITapGestureRecognizer you can use UILongPressGestureRecognizer to get the different state.

Like this:

let tapgr = UILongPressGestureRecognizer(target: self, action: #selector(tapTrigger(recongizer:)))
tapgr.minimumPressDuration = 0
bottomBar.addGestureRecognizer(tapgr)

@objc func tapTrigger(recongizer: UITapGestureRecognizer){
        if recongizer.state == .began{
            print("recognised") 
        } else if recongizer.state == .ended{
           print("ended") //prints
        }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...