我是否必须用代码来做到这一点,或者在检查员中是否有某些东西缺失?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