gpt4 book ai didi

ios - UIScrollView 无法识别 ShakeGesture

转载 作者:可可西里 更新时间:2023-11-01 01:07:24 25 4
gpt4 key购买 nike

ScrollView 无法识别摇动手势

我有 3 个文件。

1.ContentVC - 包含在 View Controller 之间滑动的 ScrollView

2.FirstVC - 它包含摇动功能

3.SecondVC - 默认 View Controller

当我摇动设备时没有任何反应。

ContentVC.swift
class ContainerVC: UIViewController {
@IBOutlet weak var scroll: UIScrollView!

override func viewDidLoad() {
super.viewDidLoad()

let left = self.storyboard?.instantiateViewController(withIdentifier: "vw") as! UINavigationController
self.addChild(left)
self.scroll.addSubview(left.view)
self.didMove(toParent: self)

let last = self.storyboard?.instantiateViewController(withIdentifier: "lastviewNav") as! UINavigationController
self.addChild(last)
self.scroll.addSubview(last.view)
self.didMove(toParent: self)

var middleframe:CGRect = last.view.frame
middleframe.origin.x = self.view.frame.width
last.view.frame = middleframe

self.scroll.contentSize = CGSize(width: (self.view.frame.width) * 2, height: (self.view.frame.height))
}
}
FirstVC.swift
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if event?.subtype == UIEvent.EventSubtype.motionShake {
if motion == .motionShake {
print("quote is appearing by shaking the device")
} else {
print("No quote is coming")
}
}
}

最佳答案

Motion events are delivered initially to the first responder and are forwarded up the responder chain as appropriate.
https://developer.apple.com/documentation/uikit/uiresponder/1621090-motionended

因此请确保:

  1. FirstVC 能够成为第一响应者:
override var canBecomeFirstResponder: Bool {
return true
}
  1. FirstVC 是特定时间点的第一响应者:
firstVC.becomeFirstResponder()

现在您的 UIViewController 将能够接收摇动事件。

您可以阅读有关响应者链的更多信息:How do Responder Chain Works in IPhone? What are the "next responders"?

关于ios - UIScrollView 无法识别 ShakeGesture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283285/

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