2016-03-24 57 views
0

我看到这个问题到处都是百万次,但没有一个答案一直在为我工作。如何从UITextField删除焦点?

我需要从UITextField删除焦点。这意味着我需要光标消失(并且键盘消失)。

我已经看到了互联网上的解决方法是,[textfield resignFirstResponder][textfield endEditing:YES],这是能够隐藏键盘,但不会从删除的UITextField焦点(即光标仍给出UITextField内愉快地闪烁,虽然键盘驳回)。

这个事情是我需要得到事件,当用户点击到UITextField和事件didBeginEditing被解雇。每当事件被触发时,或者更一般地说,每当用户点击UITextField时,我都会做一些事情。但是如果焦点没有完全从UITextField中移除,那么即使在我调用resignFirstResponderendEditing:YES后,该事件也不能再次被触发。

我该如何做到这一点?谢谢。

+2

尝试让别的东西成为第一响应者,也许只是视图控制器的基本视图 – Fonix

+0

您的键盘已经退出并且只有光标可用 –

+0

@Fonix我已经尝试将textfield.superView设置为firstresponder,但它没有'帮助。另一个指南告诉我需要将firstresponder设置为另一个文本字段。但我没有任何其他文本框。屏幕上只有一个文本框和其他组件,但其他组件除了文本框外,没有其他组件可以成为第一响应者。 –

回答

1

可以使cusor颜色,清晰的彩色

textfeild.tintColor = UIColor.clearColor() 

,如果你只是想取消键盘则

textfeild.resignFirstResponder() 

将取消键盘,当你想专注再次使用

textfeild.becomeFirstResponder() 
+0

它没有帮助,因为我不想只是解雇键盘。我希望textfield也能消除焦点。将光标设置为清除颜色也没有帮助,因为光标仍然在那里。如果文本字段仍处于焦点状态,则变为FirstResponder也不会触发didBeginEditing事件。我需要在用户点击文本框时触发didBeginEditing事件,但如果我无法让文本框失去焦点,则无法再次触发事件。 –

+0

- (BOOL)textFieldShouldReturn :(UITextField *)textField {textField resignFirstResponder]; 返回YES; }试试这个我的情况下,cusor没有出现,也设置代表自己 –

0

如果您只需要检测何时触摸了文本字段,而不是专门查找didBeginEditing,为什么不只是做的UITextField的一个子类,并覆盖touchesBegan像这样

class SpecialTextField: UITextField { 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("touched textfield") 
    } 
} 

那么你可以使用它通过委托方法火的事件,或直接以某种方式

0

我有同样的问题很久以前。

我有包含UITextField的屏幕,和其他一些控制,其中一些屏幕键盘下出现(是的,我现在知道我应该已经使用限制,以确保屏幕UIView装可见部分的屏幕)。

在我的情况的问题是,一个模式屏幕上,一旦出现屏幕键盘,你可以永远摆脱它,即使你尝试使用resignFirstResponder。苹果以这种方式故意设计它,以阻止用户因键盘出现而烦恼,并且消失。嗯。

我的解决办法很简单:

让您UITextField禁用。即使只是几分之一秒,然后你重新启用它。

这将使屏幕键盘很好地滑开。