Chcę wyłączyć przycisk ( UIButton
) w systemie iOS po jego kliknięciu. Jestem nowy w programowaniu na iOS, ale myślę, że odpowiednik kodu w celu - C to:
button.enabled = NO;
Ale nie mogłem tego zrobić szybko.
Chcę wyłączyć przycisk ( UIButton
) w systemie iOS po jego kliknięciu. Jestem nowy w programowaniu na iOS, ale myślę, że odpowiednik kodu w celu - C to:
button.enabled = NO;
Ale nie mogłem tego zrobić szybko.
Odpowiedzi:
Wartość logiczna dla NO
języka Swift to false
.
button.isEnabled = false
powinien to zrobić.
Tutaj jest dokumentacja Swift dla UIControl
„s isEnabled
nieruchomości.
Jeśli chcesz, aby przycisk pozostał statyczny bez wyglądu „wciśniętego”:
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
Zapamiętaj:
1) Twój IBOutlet
jest ->@IBOutlet weak var editButton: UIButton!
2) Kod powyżej wchodzi viewWillAppear
Sposób, w jaki to robię, jest następujący:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction jest połączony z twoim przyciskiem w scenorysie.
Jeśli masz skonfigurowany przycisk jako punkt sprzedaży:
@IBOutlet weak var myButton: UIButton!
Następnie możesz uzyskać dostęp do włączonych właściwości za pomocą. notacja na nazwie przycisku:
myButton.enabled = false
Wyłącz przycisk w Swift 3:
yourButton.isEnabled = false
Dla tych, którzy wpisali w Google „wyłącz przycisk”, ale mogą mieć bardziej szczegółowe przypadki użycia:
Wyłącz z efektem wizualnym: Jak powiedzieli inni, zapobiegnie to naciśnięciu przycisku, a system automatycznie sprawi, że będzie wyglądał na wyłączony:
yourButton.isEnabled = false
Wyłącz bez efektu wizualnego: Czy używasz przycisku w przypadku, gdy powinien wyglądać normalnie, ale nie powinien zachowywać się jak przycisk „lubi”, reagując na dotknięcia? Spróbuj tego!
yourButton.userInteractionEnabled = false
Ukryj bez wyłączania: To podejście powoduje ukrycie przycisku bez wyłączania go (niewidoczny, ale nadal można go dotknąć):
yourButton.alpha = 0.0
Usuń: spowoduje to całkowite usunięcie widoku:
yourButton.removeFromSuperView()
Stuknij coś za przyciskiem: Masz ustawione dwa przyciski i chcesz, aby górny przycisk tymczasowo zachowywał się tak, jakby go tam nie było? Jeśli nie będziesz ponownie potrzebować górnego przycisku, usuń go. Jeśli będziesz go ponownie potrzebować, spróbuj skondensować jego wysokość lub szerokość do 0!
Możesz włączyć / wyłączyć przycisk za pomocą właściwości isEnabled
lub isUserInteractionEnabled
.
Różnica między dwoma to:
isEnabled
jest właściwością UIControl (super klasa UIButton) i ma efekty wizualne (tj. wyszarzone) włączania / wyłączania
isUserInteractionEnabled
jest właściwością UIView (super klasa UIControl) i nie ma żadnego efektu wizualnego, ale spełnia swój cel
Stosowanie :
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Powiedzmy, że w Swift 4 masz skonfigurowany przycisk dla segue, IBAction
jak ten, @IBAction func nextLevel(_ sender: UIButton) {}
i masz inne akcje występujące w Twojej aplikacji (np. Licznik czasu, gra itp.). Zamiast wyłączać przycisk przejścia, możesz chcieć dać użytkownikowi opcję korzystania z tego przejścia, podczas gdy inne działania nadal występują i BEZ AWARII APLIKACJI . Oto jak:
var appMode = 0
@IBAction func mySegue(_ sender: UIButton) {
if appMode == 1 { // avoid crash if button pressed during other app actions and/or conditions
let conflictingAction = sender as UIButton
conflictingAction.isEnabled = false
}
}
Pamiętaj, że prawdopodobnie będziesz mieć inne warunki w obrębie if appMode == 0
i / lub if appMode == 1
które nadal będą występować i NIE będą kolidować z mySegue
przyciskiem. W ten sposób UNIKANIE AWARII .
Przycisk można wyłączyć w Swift 4 za pomocą kodu
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'