web-dev-qa-db-ja.com

ボタンを無効にする

IOSのボタン(UIButton)がクリックされた後に無効にします。私はiOS向けの開発は初めてですが、客観的な同等のコード-Cはこれだと思います:

button.enabled = NO;

しかし、私はスウィフトでそれを行うことができませんでした。

78
baranbaris

SwiftのNOのブール値はfalseです。

button.isEnabled = false

それを行う必要があります。

ここ は、UIControlisEnabledプロパティのSwiftドキュメントです。

169
KerrM

「押された」外観なしでボタンを静的にしたい場合:

// Swift 2
editButton.userInteractionEnabled = false 

// Swift 3
editButton.isUserInteractionEnabled = false 

覚えておいてください:

1)IBOutletは-> @IBOutlet weak var editButton: UIButton!

2)上記のコードはviewWillAppearに入ります

33
Daviiid

これを行う方法は次のとおりです。

@IBAction func pressButton(sender: AnyObject) {
    var disableMyButton = sender as? UIButton
    disableMyButton.enabled = false
}

IBActionは、ストーリーボードのボタンに接続されています。

ボタンをアウトレットとして設定している場合:

    @IBOutlet weak var myButton: UIButton!

その後、を使用して有効なプロパティにアクセスできます。ボタン名の表記:

    myButton.enabled = false
10
Krivvenz

Swift 3のボタンを無効にします:

yourButton.isEnabled = false
6
Gilad Brunfman

Swift 4で、@IBAction func nextLevel(_ sender: UIButton) {}のようなIBActionとしてセグエ用に設定されたボタンがあり、アプリ内で他のアクション(タイマー、gamePlayなど)が発生しているとします。セグエボタンを無効にするのではなく、他のアクションがまだ発生しているときにセグエを使用するオプションをユーザーに提供したい場合があります。アプリのクラッシュなし方法は次のとおりです。

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 == 0if appMode == 1には、mySegueボタンと競合しない他の条件が発生する可能性があることに注意してください。したがって、クラッシュの回避

0
user9470831

「ボタンを無効にする」ことをグーグルで調べたが、より微妙なユースケースがある場合:

視覚効果で無効にする:他の人が言ったように、これはボタンが押されるのを防ぎ、システムは自動的に無効に見えるようにします:

yourButton.isEnabled = false 

視覚効果なしで無効にする:正常に見えるが、タッチに反応してボタンのように振る舞うべきではない場合にボタンを使用していますか?これを試して!

yourButton.userInteractionEnabled = false

無効化せずに非表示:このアプローチでは、ボタンを無効化せずに非表示にします(非表示ですが、タップすることができます):

 yourButton.alpha = 0.0

Remove:これにより、ビューが完全に削除されます。

 yourButton.removeFromSuperView()

ボタンの後ろに何かをタップします: 2つのボタンを積み重ねて、上のボタンが一時的に存在しないように動作するようにしますか?再び上部のボタンが必要ない場合は、削除します。再び必要になる場合は、高さまたは幅を0に凝縮してみてください!

0
Dave G

ボタンは、コードによってSwift 4で無効にできます

@IBAction func yourButtonMethodname(sender: UIButon) {
 yourButton.isEnabled = false 
}
0
Tina Detroja

isEnabledまたはisUserInteractionEnabledプロパティを使用して、ボタンを有効/無効にすることができます。

2つの違いは次のとおりです。

  • isEnabledはUIControl(UIButtonのスーパークラス)のプロパティであり、それは視覚効果(グレー表示)がありますの有効化/無効化

  • isUserInteractionEnabledはUIView(UIControlのスーパークラス)のプロパティであり、視覚的な効果はありませんが、目的は達成します

使用法:

myButton.isEnabled = false // Recommended approach

myButton.isUserInteractionEnabled = false // Alternative approach
0