Как предотвратить переход обратно при постукивании экрана - PullRequest
0 голосов
/ 15 октября 2018

Как я могу предотвратить Xcode от предварительного перехода к предыдущему контроллеру / экрану просмотра, когда я нажимаю на экран.

Когда я щелкаю в любом месте на контроллере / экране просмотра, он возвращает меня к ранее просмотренномуview controller / screen.

Я тестировал с симулятором и на реальном iPhone, и он делает то же самое.Кроме того, я проверил это, удалив все сегменты в XCode, и он все еще возвращает меня к предыдущему экрану, если я щелкну где-нибудь.

[ОБНОВЛЕНИЕ С КОДОМ]

View Controller # 1:

import UIKit

class FirstViewController: UIViewController {

    // Button
    @IBAction func btn(_ sender: Any) {
        performSegue(withIdentifier: "SecondView", sender: self)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

Затем из View Controller # 1 добавляется переход к View Controller # 2 - подарок, модально с идентификатором «SecondView».

View Controller# 2:

import UIKit

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

Ответы [ 4 ]

0 голосов
/ 16 ноября 2018

Я нашел ответ на свой вопрос ...

Вот ответ:

 private func removePartialCurlTap() {
  if let gestures = self.view.gestureRecognizers as? [UIGestureRecognizer] {
    for gesture in gestures {
      self.view.removeGestureRecognizer(gesture)
    }
  }
}

override func viewDidAppear(_ animated: Bool) {
  super.viewDidAppear(animated)
  removePartialCurlTap()
}

Кажется, проблема заключается в переходе, используемом для Seque, особенно при использовании "Partial"Керл ", вы получите эту проблему.Я предполагаю, что это ошибка в Xcode / iOS, или иным образом недостаточно хорошо документированная, что если вы используете этот конкретный переход, вам нужно в основном удалить GestureRecognizer, чтобы пользователь не возвращался на предыдущий экран, когда он просто нажимал на кого-то наэкран.

Кредит Антону Родзику за публикацию ответа на этот вопрос здесь: Как отключить автоматический переход к главному экрану в Xcode?

0 голосов
/ 16 октября 2018

Я не знаю ваш подробный код, просто предлагаю один метод, используйте EventTouch или UITapGestureRecognizer, чтобы сделать это , в View Controller # 2 : EventTouch

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
       dismiss(animated: Bool)
}

или UITapGestureRecognizer

func handleTap(sender: UITapGestureRecognizer) {
   if sender.state == .ended {
    // handling code
    dismiss(animated: Bool)
   }
}

надежда может помочь вам.

0 голосов
/ 16 октября 2018

Привет, сначала, как происходит анимация. Я имею в виду эффект перехода. Если он идет сверху вниз, то запускается dismiss, попробуйте включить просмотр взаимодействия false для цели отладки и опубликуйте результат как ответ

0 голосов
/ 15 октября 2018

Похоже, что у вас есть полный экран UIButton или UIGestureRecogniser, запускающий dismiss(animated: Bool) или перемотку.

Пожалуйста, поделитесь своим кодом.

...