удар: как использовать экран, чтобы использовать сессию термина дома после работы?

Как упомянул @rmaddy в комментарии, это нельзя сделать так, как вы просите.

В этой части

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:constraint:)), name: UIResponder.keyboardWillShowNotification, object: nil)

у вас нет никакого контроля над тем, как именно селектор отправляется (и с какими аргументами).

UIKit внутренне в своей частной реализации делает что-то подобное ( давайте на секунду проигнорируем, что его реализация на самом деле не Swift, это не важно здесь ):

[ 111]

Что означает, что селектор уже отправлен, и нет способа добавить что-то дополнительное в необязательный userInfo (вы могли бы сделать это, если бы .post(...) произошло в вашем коде, но это ] не случай здесь).

Вам нужен альтернативный способ для доступа к текущему объекту NSLayoutConstraint внутри обработчиков выбора / скрытия клавиатуры. Возможно, это должно быть свойство в вашем ViewController, может быть какое-то состояние вашего AppDelegate или, может быть, что-то совершенно иное, невозможно сказать, не зная остальной части вашего кода.

РЕДАКТИРОВАТЬ: Согласно вашему добавленному комментарию, я предполагаю, что у вас есть что-то вроде этого:

class ViewController: UIViewController {
    @IBOutlet var constraint: NSLayoutConstraint?
}

Если это так, вы можете просто получить доступ к ограничению в вашем обработчике селектора внутри VC:

[ 113]

Есть также специальный UIKeyboardWillChangeFrameNotification, возможно, он может предоставить вам то, что вам нужно из коробки. Смотрите ответ здесь

9
задан Drew Stephens 2 November 2010 в 22:04
поделиться

1 ответ

В то время как на работе, запустите экранную сессию:

$ screen

Сделайте любую работу, которую Вы хотите на терминальном сеансе, и когда Вы уезжаете, чтобы пойти домой, отсоединить сессию путем нажатия CTRL-A затем D. Ваша экранная сессия затем исчезнет. Чтобы повторно активировать его, после того как Вы дома, возобновите сессию с-r опцией:

$ screen -r

Вся Ваша работа появится, поскольку Вы вводите сохраненную экранную сессию.

16
ответ дан 4 December 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: