Я сделал расширение для этого.
public extension UIResponder {
private struct Static {
static weak var responder: UIResponder?
}
public static func currentFirst() -> UIResponder? {
Static.responder = nil
UIApplication.shared.sendAction(#selector(UIResponder._trap), to: nil, from: nil, for: nil)
return Static.responder
}
@objc private func _trap() {
Static.responder = self
}
}
Использование:
if let activeTextField = UIResponder.currentFirst() as? UITextField {
// ...
}
Да, struct
точно такая же, как class
, за исключением того, что по умолчанию доступность public
для struct
( в то время как это частный
для класса
).
Да. По умолчанию наследование является публичным.
Синтаксис (пример):
struct A { };
struct B : A { };
struct C : B { };
Помимо того, что уже заявили Алекс и Эван, я хотел бы добавить, что структура C ++ не похожа на структуру C.
В C ++ структура может иметь методы, наследование, и т. д. точно так же, как класс C ++.
Конечно. В C ++ структуры и классы почти идентичны (среди небольших отличий есть такие вещи, как установка по умолчанию на public вместо private).