我是否必须用代码来做到这一点,或者在检查员中是否有某些东西缺失?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. UITableViewCell在点击时突出显示
- 4. 如何在用户点击时禁用UIButton的突出显示
- 5. 在点击时启用突出显示jQuery地图突出显示
- 6. Android如何使点击时突出显示?
- 7. 突出显示(点击)时,如何使UIImageView变暗?
- 8. 如何在鼠标点击时突出显示HTML元素?
- 9. 点击时如何突出显示某些元素?
- 10. 没有“点击突出显示”的NSButton
- 11. 突出显示的UITextField搜索(swift2)
- 12. RecyclerView突出显示项目点击
- 13. 点击突出显示Blob数据
- 14. 如何使散点图突出显示数据点击
- 15. iPhone OS语法突出显示UITextField
- 16. 当我在swift中点击UITextField时,为什么不显示UIKeyboard?
- 17. 如何突出显示点击链接的相应标题?
- 18. 防止单击时突出显示IconMenuIcon
- 19. 单击时突出显示文本
- 20. wxPython:在鼠标点击时突出显示GidSizer中的项目
- 21. 触摸布局时突出显示可点击的图像
- 22. 如何突出显示UITextField中的文本部分?
- 23. 悬停/点击/取消点击突出显示文字
- 24. iOS - UIButton显示突出显示颜色
- 25. 双击突出显示
- 26. jqplot如何突出显示一个点
- 27. jQuery - 如何防止突出显示第二段(“点击”)
- 28. 如何突出显示当前点击h3和li元素jquery
- 29. 如何突出显示div或使div被激活点击
- 30. 我们如何突出显示点击菜单条上的活动菜单项?
谢谢!很好用...... – TWcode
不应该使用'textFieldDidBeginEditing'和'textFieldDidEndEditing'来代替'textFieldShouldBeginEditing'和'textFieldShouldEndEditing'吗? OP想突出显示该字段,而不是修改/检查textField是否应保持编辑模式。 – Rao