我是否必須用代碼來做到這一點,或者在檢查員中是否有某些東西缺失?iOS:如何讓我的UITextfield點擊時突出顯示?
3
A
回答
10
與UIButton
不同,UITextField
沒有突出顯示的狀態。如果你想改變文本字段的顏色,當它獲得焦點,您可以使用UITextFieldDelegate
的- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
當控件首次接收焦點。這將被調用。從那裏你可以改變背景和/或文字顏色。一旦焦點離開控制,您可以使用- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
來重置顏色。
0
在斯威夫特2,你可以使用委託功能,如下面,
class CustomTextField: UITextField, UITextFieldDelegate{
init(){
super.init(frame: CGRectMake(0, 0, 0, 0))
self.delegate = self // SETTING DELEGATE TO SELF
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.backgroundColor = UIColor.greenColor() // setting a highlight color
}
func textFieldDidEndEditing(textField: UITextField) {
textField.backgroundColor = UIColor.whiteColor() // setting a default color
}
}
0
如果您仍然希望能夠在您的ViewController使用其他委託功能,我建議你補充一點:
override weak var delegate: UITextFieldDelegate? {
didSet {
if delegate?.isKindOfClass(YourTextField) == false {
// Checks so YourTextField (self) doesn't set the textFieldDelegate when assigning self.delegate = self
textFieldDelegate = delegate
delegate = self
}
}
}
// This delegate will actually be your public delegate to the view controller which will be called in your overwritten functions
private weak var textFieldDelegate: UITextFieldDelegate?
class YourTextField: UITextField, UITextFieldDelegate {
init(){
super.init(frame: CGRectZero)
self.delegate = self
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.backgroundColor = UIColor.blackColor()
textFieldDelegate?.textFieldDidBeginEditing?(textField)
}
func textFieldDidEndEditing(textField: UITextField) {
textField.backgroundColor = UIColor.whiteColor()
textFieldDelegate?.textFieldDidBeginEditing?(textField)
}
}
這樣你的視圖控制器不需要知道你覆蓋了委託,你可以在你的視圖控制器中實現UITextFieldDelegate函數。
let yourTextField = YourTextField()
yourTextField.delegate = self
相關問題
- 1. 點擊UITextField iOS時如何顯示彈出菜單列表? (Kxmenu)
- 2. UITextField在用戶點擊空間時突出顯示文本
- 3. 我如何突出顯示我點擊的單詞?
- 4. UITableViewCell在點擊時突出顯示
- 5. jquery:點擊時突出顯示行
- 6. 如何突出顯示自定義UIButton當在iOS中點擊
- 7. 如何在用戶點擊時禁用UIButton的突出顯示
- 8. 在點擊UITextField時顯示UITableView
- 9. 點擊時如何突出顯示某些元素?
- 10. 如何在鼠標點擊時突出顯示HTML元素?
- 11. 如何在點擊時突出顯示div
- 12. 突出顯示(點擊)時,如何使UIImageView變暗?
- 13. Android如何使點擊時突出顯示?
- 14. 如何點擊html頁面時突出顯示按鈕?
- 15. 如何點擊時突出顯示一個句子?
- 16. 在點擊時啓用突出顯示jQuery地圖突出顯示
- 17. 沒有「點擊突出顯示」的NSButton
- 18. 表突出顯示並點擊時顯示其內容
- 19. 突出顯示的UITextField搜索(swift2)
- 20. 單擊UITextField時顯示UIPickerView
- 21. 如何讓Git突出顯示更改?
- 22. 如何讓用戶突出顯示TextView
- 23. 點擊突出顯示Blob數據
- 24. asp.net listview突出顯示點擊行
- 25. RecyclerView突出顯示項目點擊
- 26. jQuery突出顯示可點擊區域
- 27. UIButton沒有突出顯示,當點擊
- 28. 如何使散點圖突出顯示數據點擊
- 29. 如何讓按鈕在點擊屏幕後保持突出顯示?
- 30. iPhone OS語法突出顯示UITextField
謝謝!很好用...... – TWcode
不應該使用'textFieldDidBeginEditing'和'textFieldDidEndEditing'來代替'textFieldShouldBeginEditing'和'textFieldShouldEndEditing'嗎? OP想突出顯示該字段,而不是修改/檢查textField是否應保持編輯模式。 – Rao