Notice
Recent Posts
Recent Comments
Link
투케이2K
25. (ios/swift) 흔들기 shake 이벤트 감지 및 팝업창 호출 실시 - motionBegan , motionCancelled , motionEnded 본문
IOS
25. (ios/swift) 흔들기 shake 이벤트 감지 및 팝업창 호출 실시 - motionBegan , motionCancelled , motionEnded
투케이2K 2021. 10. 24. 08:22[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var displayText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
// [흔들기 이벤트 동작 시작]
var startMotionTime = ""
var cancleMotionTime = ""
var endMotionTime = ""
override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
self.startMotionTime = self.getNowDate24()
print("")
print("===============================")
print("[MainController > motionBegan() : 흔들기 이벤트 시작]")
print("시간 : ", self.startMotionTime)
print("===============================")
print("")
}
}
// [흔들기 이벤트 동작 취소]
override func motionCancelled(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
self.cancleMotionTime = self.getNowDate24()
if motion == .motionShake {
print("")
print("===============================")
print("[MainController > motionCancelled() : 흔들기 이벤트 취소]")
print("시간 : ", self.cancleMotionTime)
print("===============================")
print("")
}
}
// [흔들기 이벤트 동작 종료]
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
self.endMotionTime = self.getNowDate24()
print("")
print("===============================")
print("[MainController > motionEnded() : 흔들기 이벤트 종료]")
print("시간 : ", self.endMotionTime)
print("===============================")
print("")
// [모션 시작 시간 및 종료 시간을 date 로 변환]
let dateFormatter = DateFormatter() // Date 포맷 객체 선언
dateFormatter.dateFormat = "yyyyMMddHHmmss" // Date 포맷 타입 지정
let start = dateFormatter.date(from: self.startMotionTime)
let end = dateFormatter.date(from: self.endMotionTime)
// [종료된 시간이 시작 시간보다 큰 경우]
if Int(self.endMotionTime) ?? 0 >= Int(self.startMotionTime) ?? 0 {
let useTime = Int(end!.timeIntervalSince(start!))
print("")
print("===============================")
print("[MainController > motionEnded() : 흔들기 동작 시간 (초)]")
print("초 : ", useTime)
print("===============================")
print("")
// [동작 시간이 1초 이상인 경우 팝업창 호출]
if useTime >= 1 {
let alert = UIAlertController(title: "이벤트 감지", message: "흔들기 이벤트가 동작되었습니다", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "확인", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
}
}
// [실시간 현재 시간 확인 함수]
func getNowDate24() -> String {
// [date 객체 사용해 현재 날짜 및 시간 24시간 형태 출력 실시]
let nowDate = Date() // 현재의 Date 날짜 및 시간
let dateFormatter = DateFormatter() // Date 포맷 객체 선언
dateFormatter.dateFormat = "yyyyMMddHHmmss" // Date 포맷 타입 지정
let date_string = dateFormatter.string(from: nowDate) // 포맷된 형식 문자열로 반환
return date_string
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments