UIButton
클릭 후 iOS 에서 버튼 ( ) 을 비활성화하고 싶습니다 . 저는 iOS 개발에 익숙하지 않지만 객관적인 코드는 C라고 생각합니다.
button.enabled = NO;
그러나 나는 그것을 신속하게 할 수 없었다.
답변
NO
Swift 의 부울 값 은 false
입니다.
button.isEnabled = false
해야합니다.
다음 은 UIControl
의 isEnabled
속성에 대한 Swift 문서입니다 .
답변
버튼이 “눌려진”모양없이 정적으로 유지되도록하려면 다음을 수행하십시오.
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
생각해 내다:
1) 당신 IBOutlet
은->@IBOutlet weak var editButton: UIButton!
2) 위의 코드가 들어갑니다 viewWillAppear
답변
이 작업을 수행하는 방법은 다음과 같습니다.
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction은 스토리 보드의 버튼에 연결됩니다.
버튼이 콘센트로 설정되어있는 경우 :
@IBOutlet weak var myButton: UIButton!
그런 다음을 사용하여 활성화 된 속성에 액세스 할 수 있습니다. 버튼 이름에 표기 :
myButton.enabled = false
답변
Swift 3에서 버튼 비활성화 :
yourButton.isEnabled = false
답변
Google에서 ‘버튼을 사용 중지’했지만 더 미묘한 사용 사례가있는 경우 :
시각 효과로 비활성화 : 다른 사람들이 말했듯이 이렇게하면 버튼이 눌러지지 않고 시스템이 자동으로 비활성화 된 것처럼 보입니다.
yourButton.isEnabled = false
시각 효과없이 비활성화 : 버튼이 정상적으로 보이지만 터치에 반응하여 좋아하는 버튼으로 작동하지 않는 경우 버튼을 사용하고 있습니까? 이 시도!
yourButton.userInteractionEnabled = false
비활성화하지 않고 숨기기 : 이 접근 방식은 비활성화하지 않고 버튼을 숨 깁니다 (보이지 않지만 여전히 탭할 수 있음).
yourButton.alpha = 0.0
제거 : 보기를 완전히 제거합니다.
yourButton.removeFromSuperView()
버튼 뒤에있는 항목 누르기 : 두 개의 버튼이 쌓여 있고 상단 버튼이 일시적으로없는 것처럼 작동하도록 하시겠습니까? 상단 버튼이 다시 필요하지 않으면 제거하십시오. 다시 필요하면 높이 또는 너비를 0으로 축소하십시오!
답변
isEnabled
또는 isUserInteractionEnabled
속성을 사용하여 버튼을 활성화 / 비활성화 할 수 있습니다 .
둘의 차이점은 다음과 같습니다.
-
isEnabled
UIControl (UIButton의 수퍼 클래스)의 속성 이며 활성화 / 비활성화의 시각 효과 (즉, 회색으로 표시됨) 가 있습니다. -
isUserInteractionEnabled
UIView (UIControl의 수퍼 클래스)의 속성이며 시각적 효과는 없지만 목적을 달성합니다.
사용법 :
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
답변
Swift 4에서 IBAction
이와 같이 segue에 대해 설정된 버튼 이 @IBAction func nextLevel(_ sender: UIButton) {}
있고 앱 내에서 다른 작업이 발생 한다고 가정 해 보겠습니다 (예 : 타이머, 게임 플레이 등). segue 버튼을 비활성화하는 대신 다른 작업이 계속 발생하고 앱 충돌없이 해당 segue를 사용할 수있는 옵션을 사용자에게 제공 할 수 있습니다 . 방법은 다음과 같습니다.
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
}
}
참고 당신은 가능성이 내 다른 조건이됩니다하시기 바랍니다 if appMode == 0
및 / 또는 if appMode == 1
와 그 여전히 발생되지 않습니다 갈등 mySegue
버튼을 누릅니다. 따라서 충돌 방지 .