用的UITextField,键盘管理的iOS问题(Problems with UITextField

2019-10-16 21:06发布

(我靶向的iOS 2.0暂且。)

我有子类的UITextField和实现UITextFieldDelegate协议的类。

起初,我并没有设置类作为自己的代表,当我在场上点击,键盘会自动弹出。 到现在为止还挺好。

我送setReturnKeyType:消息UIReturnKeyDone,所以它改变了右下角的按钮说完成。

问题是,当我点击完成或按[返回],什么也没发生 - 键盘不会消失。

我尝试添加自己作为最终的编辑通知的观察员,但它从来没有完成被点击时调用; 从谷歌搜索似乎当现场辞去第一响应者只能被炒鱿鱼 - 这是位我不能让事情发生。

然后我发现这里的答案是建议增加自身作为委托和处理textFieldShouldReturn :. 问题是,只要我自己添加为代表,当你点击该领域的键盘不再弹出(和它不会获得焦点) - 现在看来,这是不是成为第一个响应者。

我试图处理textFieldShouldBeginEditing:并返回YES(文档说应该是默认的;如果没有覆盖),并得到了调用,但并没有区别。 在我的无知我试图[文本框becomeFirstResponder]和一个堆栈溢出奖励了(现在我知道被称为响应试图成为第一个响应者)。

我现在彻底卡住!

任何人都可以帮忙吗? 我只是想在键盘走开当用户点击完成或按[返回]。

Answer 1:

您使用的是厦门国际银行或编程这样做呢? 如果您使用的是厦门国际银行,那么你可能已经忘记了委托连接在文件的所有者。

(BOOL)textFieldShouldReturn:(UITextField *)textField   
{
    [textField resignFirstResponder];
    return YES;
}

试试这个。



Answer 2:

我的错。 原来你不应该到一个文本字段的委托设置为自己 - 有因未处理的选择被转发到其委托的并发症。 如果它不给选择响应消息转到其委托......这本身就是,这是我们已经知道没有响应。 因此,一个无限循环。

使用一个单独的对象为委托完美。

希望这会帮助别人避免同样的问题。



文章来源: Problems with UITextField & Keyboard Management in iOS