Files
featherVoice/TUIKit/TUICallKit/TUICallKit-Swift/View/Component/FloatView/FloatWindowViewController.swift
2025-08-08 10:49:36 +08:00

84 lines
2.6 KiB
Swift

//
// FloatWindowViewController.swift
// TUICallKit
//
// Created by vincepzhang on 2023/3/2.
//
import Foundation
import TUICore
protocol FloatingWindowViewDelegate: NSObject {
func tapGestureAction(tapGesture: UITapGestureRecognizer)
func panGestureAction(panGesture: UIPanGestureRecognizer)
}
class FloatWindowViewController: UIViewController, FloatingWindowViewDelegate {
let callEventObserver = Observer()
weak var delegate: FloatingWindowViewDelegate?
override func viewDidLoad() {
super.viewDidLoad()
if TUICallState.instance.scene.value == .group {
addFloatingWindowGroupView()
} else if TUICallState.instance.scene.value == .single {
addFloatingWindowSignalView()
}
registerObserver()
}
deinit {
TUICallState.instance.event.removeObserver(callEventObserver)
for view in view.subviews {
view.removeFromSuperview()
}
}
func addFloatingWindowGroupView() {
let floatView = FloatingWindowGroupView(frame: CGRect.zero)
view.addSubview(floatView)
floatView.snp.makeConstraints { make in
make.center.equalTo(self.view)
make.size.equalTo(self.view)
}
floatView.delegate = self
}
func addFloatingWindowSignalView() {
let floatView = FloatingWindowSignalView(frame: CGRect.zero)
view.addSubview(floatView)
floatView.snp.makeConstraints { make in
make.center.equalTo(self.view)
make.size.equalTo(self.view)
}
floatView.delegate = self
}
// MARK: FloatingWindowViewDelegate
func tapGestureAction(tapGesture: UITapGestureRecognizer) {
if self.delegate != nil && ((self.delegate?.responds(to: Selector(("tapGestureAction")))) != nil) {
self.delegate?.tapGestureAction(tapGesture: tapGesture)
}
}
func panGestureAction(panGesture: UIPanGestureRecognizer) {
if self.delegate != nil && ((self.delegate?.responds(to: Selector(("panGestureAction")))) != nil) {
self.delegate?.panGestureAction(panGesture: panGesture)
}
}
func registerObserver() {
TUICallState.instance.event.addObserver(callEventObserver) { newValue, _ in
if newValue.eventType == .ERROR {
guard let errorCode = newValue.param[EVENT_KEY_CODE] as? Int32 else { return }
guard let errorMessage = newValue.param[EVENT_KEY_MESSAGE] as? String else { return }
TUITool.makeToast("error:\(errorCode):\(errorMessage)")
}
}
}
}