Tôi muốn tắt một nút ( UIButton
) trên iOS sau khi nó được nhấp vào. Tôi mới phát triển cho iOS nhưng tôi nghĩ mã tương đương trên mục tiêu - C là:
button.enabled = NO;
Nhưng tôi không thể làm điều đó nhanh chóng.
Tôi muốn tắt một nút ( UIButton
) trên iOS sau khi nó được nhấp vào. Tôi mới phát triển cho iOS nhưng tôi nghĩ mã tương đương trên mục tiêu - C là:
button.enabled = NO;
Nhưng tôi không thể làm điều đó nhanh chóng.
Câu trả lời:
Giá trị boolean NO
trong Swift là false
.
button.isEnabled = false
Hãy làm nó.
Dưới đây là tài liệu Swift cho UIControl
's isEnabled
tài sản.
Nếu bạn muốn nút ở trạng thái tĩnh mà không xuất hiện "được nhấn":
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
Nhớ lại:
1) Của bạn IBOutlet
là ->@IBOutlet weak var editButton: UIButton!
2) Mã trên đi vào viewWillAppear
Cách tôi làm như sau:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction được kết nối với nút của bạn trong bảng phân cảnh.
Nếu bạn đã thiết lập nút của mình dưới dạng Outlet:
@IBOutlet weak var myButton: UIButton!
Sau đó, bạn có thể truy cập các thuộc tính đã bật bằng cách sử dụng. ký hiệu trên tên nút:
myButton.enabled = false
Tắt một nút trên Swift 3:
yourButton.isEnabled = false
Đối với những người Google "vô hiệu hóa một nút" nhưng có thể có nhiều trường hợp sử dụng sắc thái hơn:
Tắt bằng hiệu ứng hình ảnh: Như những người khác đã nói, điều này sẽ ngăn không cho nút được nhấn và hệ thống sẽ tự động làm cho nó trông bị vô hiệu hóa:
yourButton.isEnabled = false
Tắt mà không có hiệu ứng hình ảnh: Bạn có đang sử dụng một nút trong trường hợp nó trông bình thường nhưng không hoạt động nút thích bằng cách phản ứng với các lần chạm không? Thử cái này!
yourButton.userInteractionEnabled = false
Ẩn mà không vô hiệu hóa: Cách tiếp cận này ẩn nút mà không tắt nó (ẩn nhưng vẫn có thể được khai thác):
yourButton.alpha = 0.0
Xóa: Thao tác này sẽ xóa hoàn toàn chế độ xem:
yourButton.removeFromSuperView()
Nhấn vào một cái gì đó phía sau một nút: Có hai nút xếp chồng lên nhau và bạn muốn nút trên cùng tạm thời hoạt động như không có ở đó? Nếu bạn không cần nút trên cùng nữa, hãy xóa nó. Nếu bạn cần lại, hãy thử giảm chiều cao hoặc chiều rộng của nó về 0!
Bạn có thể bật / tắt một nút bằng cách sử dụng isEnabled
hoặc thuộc isUserInteractionEnabled
tính.
Sự khác biệt giữa hai là:
isEnabled
là một thuộc tính của UIControl (siêu lớp của UIButton) và nó có các hiệu ứng hình ảnh (tức là chuyển sang màu xám) khi bật / tắt
isUserInteractionEnabled
là thuộc tính của UIView (siêu cấp UIControl) và không có hiệu ứng hình ảnh mặc dù nhưng đạt được mục đích
Sử dụng :
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
Giả sử trong Swift 4, bạn có một nút được thiết lập cho một segue như IBAction
thế này @IBAction func nextLevel(_ sender: UIButton) {}
và bạn có các hành động khác xảy ra trong ứng dụng của mình (tức là bộ đếm thời gian, trò chơi Play, v.v.). Thay vì vô hiệu hóa nút xác minh, bạn có thể muốn cung cấp cho người dùng tùy chọn sử dụng nút xác định vị trí đó trong khi các hành động khác vẫn đang diễn ra và KHÔNG CÒN XÓA ỨNG DỤNG . Đây là cách thực hiện:
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
}
}
Xin lưu ý rằng bạn có thể sẽ có các điều kiện khác bên trong if appMode == 0
và / hoặc if appMode == 1
điều đó vẫn xảy ra và KHÔNG xung đột với mySegue
nút. Như vậy, TRÁNH ĐƯỢC RĂNG .
Nút có thể bị vô hiệu hóa trong Swift 4 bằng mã
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'