import UIKit
class ViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//SwipeGestureRecognizer:滑動(dòng)手勢(shì)
let swipe = UISwipeGestureRecognizer(target: self, action: #selector(swipeUp(_ :)))
//設(shè)置監(jiān)聽(tīng)滑動(dòng)的方向?yàn)橄蛏? swipe.direction = .up
//添加到視圖中
self.view.addGestureRecognizer(swipe)
//ScreenEdgePanGestureRecognizer:邊緣滑動(dòng)(是UISwipeGestureRecognizer的子類(lèi))
let edgeSwipe = UIScreenEdgePanGestureRecognizer(target: self, action:#selector(ViewController.edgeSwipe))
//設(shè)置監(jiān)聽(tīng)滑動(dòng)的方向
edgeSwipe.edges = .left//從左邊緣往右滑
self.view.addGestureRecognizer(edgeSwipe)
//UITapGestureRecognizer:輕擊手勢(shì)
//單擊監(jiān)聽(tīng)
let tapSingle=UITapGestureRecognizer(target:self,action:#selector(Tap(_:)))
tapSingle.numberOfTapsRequired = 1//連續(xù)點(diǎn)擊次數(shù)
tapSingle.numberOfTouchesRequired = 1//同時(shí)按下次數(shù)
//雙擊監(jiān)聽(tīng)
let tapDouble=UITapGestureRecognizer(target:self,action:#selector(Tap(_:)))
tapDouble.numberOfTapsRequired = 2
tapDouble.numberOfTouchesRequired = 1
//如果一個(gè)空間同時(shí)有單擊,雙擊爽個(gè)事件要想點(diǎn)擊雙擊不觸發(fā)單擊事件,使用以下方法
tapSingle.require(toFail: tapDouble)
//開(kāi)啟用戶交互(如VIew使用該手勢(shì)需要更換畫(huà)面,需開(kāi)啟交互)
self.view.isUserInteractionEnabled = true
self.view.addGestureRecognizer(tapSingle)
self.view.addGestureRecognizer(tapDouble)
//UIPinchGesturnRecognizer:捏合手勢(shì)
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(Pinch(_:)))
self.view.addGestureRecognizer(pinch)
//UIRotationGestrueRecognizer:旋轉(zhuǎn)手勢(shì)
let rotation = UIRotationGestureRecognizer(target: self, action: #selector(Rotation(_:)))
self.view.addGestureRecognizer(rotation)
//UIPanGestureRecognizer:拖動(dòng)手勢(shì)
let View = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
View.backgroundColor = UIColor.black
View.center = self.view.center
View.tag = 1
self.view.addSubview(View)
let pan = UIPanGestureRecognizer(target: self, action: #selector(Pan(_:)))
View.addGestureRecognizer(pan)
//UILongPressGestureRecognzier:長(zhǎng)按
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(LongPress(_:)))
//設(shè)置長(zhǎng)按手勢(shì)按下多少時(shí)長(zhǎng)才被監(jiān)聽(tīng)
longPress.minimumPressDuration = 1.0
//取消長(zhǎng)按手勢(shì)
longPress.allowableMovement = 20.0//受災(zāi)在按下?tīng)顟B(tài)下距離超過(guò)20視為非長(zhǎng)按手勢(shì)。此屬性默認(rèn)值為10
self.view.addGestureRecognizer(longPress)
}
//響應(yīng)監(jiān)聽(tīng)事件
@objc func swipeUp(_ recognizer:UISwipeGestureRecognizer){
let point = recognizer.location(in: self.view)
print(point.x)
print(point.y)
}
@objc func edgeSwipe()
{
print("使用了邊緣滑動(dòng)手勢(shì)")
}
@objc func Tap(_ cognizer:UITapGestureRecognizer)
{
let Tapnumber = cognizer.numberOfTapsRequired
print("你點(diǎn)擊了:\(Tapnumber)")
}
@objc func Pinch(_ recognizer:UIPinchGestureRecognizer){
print("捏合比例為:\(recognizer.scale)")
}
@objc func Rotation(_ recognizer:UIRotationGestureRecognizer){
print("旋轉(zhuǎn)角度為:\(recognizer.rotation*(180/CGFloat.pi))")
}
@objc func Pan(_ recognizer:UIPanGestureRecognizer){
let point = recognizer.location(in: self.view)
let View = self.view.viewWithTag(1)
View?.center = point
//也可以用recognizer.view獲取View對(duì)象
recognizer.view?.center = point
}
@objc func LongPress(_ sender:UILongPressGestureRecognizer){
if sender.state == .began{
print("長(zhǎng)按開(kāi)始")
}else{
print("長(zhǎng)按結(jié)束")
}
}
}
Swift - UIGestureRecognizer
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。