Ios 第二个视图控制器仍对第一个视图控制器swift 3作出反应
我正在开发一个应用程序,我必须建立自己的手势识别(苹果的太精确了) 我需要使用第二个视图控制器(设置),当我使用第二个时,它仍然会对第一个做出反应 这是一个很有问题的问题,因为我用这些手势控制房子里的东西(比如灯光、音乐或更多),所以想象一下,你点击第二个视图上的按钮,房间就会亮起来,或者你向下滑动第二个视图,音乐就会被切断 我正在使用segue转到SecondViewControllerIos 第二个视图控制器仍对第一个视图控制器swift 3作出反应,ios,swift,swift3,uiviewcontroller,segue,Ios,Swift,Swift3,Uiviewcontroller,Segue,我正在开发一个应用程序,我必须建立自己的手势识别(苹果的太精确了) 我需要使用第二个视图控制器(设置),当我使用第二个时,它仍然会对第一个做出反应 这是一个很有问题的问题,因为我用这些手势控制房子里的东西(比如灯光、音乐或更多),所以想象一下,你点击第二个视图上的按钮,房间就会亮起来,或者你向下滑动第二个视图,音乐就会被切断 我正在使用segue转到SecondViewController self.performSegue(withIdentifier: "SecondViewControll
self.performSegue(withIdentifier: "SecondViewController", sender:self)
我已经为第二个视图控制器创建了另一个swift文件,其中目前没有任何内容
你知道发生了什么事吗?我怎么解决
谢谢
编辑:根据要求,以下是更多代码:
import UIKit
class ViewController: UIViewController {
//Variables definition
override func viewDidLoad() {
super.viewDidLoad()
ascending = false
UIScreen.main.wantsSoftwareDimming = true
UIScreen.main.brightness = (0.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.timer.invalidate()
isPinched = false
super.touchesBegan(touches, with: event)
startTime = getCurrentMillis()
for touch in touches{
let point = touch.location(in: self.view)
for (index,finger) in fingers.enumerated() {
if finger == nil {
fingers[index] = String(format: "%p", touch)
if (finger1.isEmpty){
finger1 = [point.x, point.y]
}
//And so on until finger10
break
}
}
}
//If the gesture is long enough, I have a special recognition (longPress)
timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(increaseValue), userInfo: nil, repeats: true)
if ascending {
ascending = false
}
else {
ascending = true
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesMoved(touches, with: event)
for touch in touches {
let point = touch.location(in: self.view)
for (index,finger) in fingers.enumerated() {
if let finger = finger, finger == String(format: "%p", touch) {
switch (index){
case 0 :
finger1 += [point.x, point.y]
//And so on until case 9 / finger10
default :
break
}
}
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
endTime = getCurrentMillis()
for touch in touches {
for (index,finger) in fingers.enumerated() {
if let finger = finger, finger == String(format: "%p", touch) {
fingers[index] = nil
break
}
}
}
direction[0] = ""
direction[1] = ""
direction[2] = ""
direction[3] = ""
direction[4] = ""
if finger1.count != 0 {
direction[0] = GestureRecognizer(coordinates: finger1, index: 0)
}
if finger2.count != 0 {
direction[1] = GestureRecognizer(coordinates: finger2, index: 1)
}
if finger3.count != 0 {
direction[2] = GestureRecognizer(coordinates: finger3, index: 2)
}
if finger4.count != 0 {
direction[3] = GestureRecognizer(coordinates: finger4, index: 3)
}
if finger5.count != 0 {
direction[4] = GestureRecognizer(coordinates: finger5, index: 4)
}
if Int64(endTime - startTime) < 600 {
//My gesture recognition
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.directionLabel.text = self.labelUpdate
self.finger1 = []
self.finger2 = []
self.finger3 = []
self.finger4 = []
self.finger5 = []
self.finger6 = []
self.finger7 = []
self.finger8 = []
self.finger9 = []
self.finger10 = []
}
}
//One of the function I call
func swipeLeftTwo(){
request(urlAdress: "Url Adress")
}
func swipeRightFour(){
self.performSegue(withIdentifier: "SecondViewController", sender:self)
}
}
请提供更多的代码,从这些信息中很难确定可能是什么错误。看,这是我第一次听到苹果(手势)太精确的问题,但你可能想调查一下,它可能会解决你的问题。@BenOng事实上Ipad不会以传统方式使用,它会固定在墙上,人们经过时会与它互动(当您离开房间时,您不会停在开关前关灯,是吗?)我们想“更换”如果你想的话,可以在Ipad上使用swift,这样的手势就不太准确了。听起来你好像把手势识别器连接到了根窗口或其他什么东西上;但是如果没有代码,我们就只是guessing@D好的,我会试试,但在这个问题上我没什么好说的。主要是我覆盖了touchesbeated/touchesMoved和touchesE也许这就是我的问题所在。
import UIKit
class SecondViewController: UIViewController {
@IBOutlet weak var labelTe: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
labelTe.text = "something changed"
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}