IOSのボタン(UIButton
)がクリックされた後に無効にします。私はiOS向けの開発は初めてですが、客観的な同等のコード-Cはこれだと思います:
button.enabled = NO;
しかし、私はスウィフトでそれを行うことができませんでした。
SwiftのNO
のブール値は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
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 == 0
やif appMode == 1
には、mySegue
ボタンと競合しない他の条件が発生する可能性があることに注意してください。したがって、クラッシュの回避。
「ボタンを無効にする」ことをグーグルで調べたが、より微妙なユースケースがある場合:
視覚効果で無効にする:他の人が言ったように、これはボタンが押されるのを防ぎ、システムは自動的に無効に見えるようにします:
yourButton.isEnabled = false
視覚効果なしで無効にする:正常に見えるが、タッチに反応してボタンのように振る舞うべきではない場合にボタンを使用していますか?これを試して!
yourButton.userInteractionEnabled = false
無効化せずに非表示:このアプローチでは、ボタンを無効化せずに非表示にします(非表示ですが、タップすることができます):
yourButton.alpha = 0.0
Remove:これにより、ビューが完全に削除されます。
yourButton.removeFromSuperView()
ボタンの後ろに何かをタップします: 2つのボタンを積み重ねて、上のボタンが一時的に存在しないように動作するようにしますか?再び上部のボタンが必要ない場合は、削除します。再び必要になる場合は、高さまたは幅を0に凝縮してみてください!
ボタンは、コードによってSwift 4で無効にできます
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
isEnabled
またはisUserInteractionEnabled
プロパティを使用して、ボタンを有効/無効にすることができます。
2つの違いは次のとおりです。
isEnabled
はUIControl(UIButtonのスーパークラス)のプロパティであり、それは視覚効果(グレー表示)がありますの有効化/無効化
isUserInteractionEnabled
はUIView(UIControlのスーパークラス)のプロパティであり、視覚的な効果はありませんが、目的は達成します
使用法:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach