有没有办法让键盘在没有resignFirstResponder
的情况下消失?我有一个UITextField
,我希望它能够接受新文本并且仍然可以看到插入点(闪烁的光标)而屏幕上没有键盘。
当我执行[textField resignFirstResponder]
时,我仍然可以通过附加textField.text
插入文字,但我再也看不到插入点了。
有没有一种标准的方法可以让键盘动画出来,同时让我的textField保持第一响应者?
感谢。
答案 0 :(得分:4)
找到这个问题的答案。虽然它不是标准的,并且像Dave说的那样,可能是应用审稿人的禁忌。使用此页面中的代码作为起点:
http://unsolicitedfeedback.com/2009/02/06/how-to-customize-uikeyboard-by-adding-subviews/
我在动画块中添加了。您可以使用标准外观动画关闭键盘视图,但是第一响应者将保留该状态。真的,键盘只是隐藏在屏幕外。
- (void)hideKeyboard
{
for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {
// Now iterating over each subview of the available windows
for (UIView *keyboard in [keyboardWindow subviews]) {
// Check to see if the view we have referenced is UIKeyboard.
// If so then we found the keyboard view that we were looking for.
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
// animate the keyboard moving
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.4];
// remove the keyboard
CGRect frame = keyboard.frame;
// if (keyboard.frame.origin.x >= 0) {
if (keyboard.frame.origin.y < 480) {
// slide the keyboard onscreen
//frame.origin.x = (keyboard.frame.origin.x - 320);
// slide the keyboard onscreen
frame.origin.y = (keyboard.frame.origin.y + 264);
keyboard.frame = frame;
}
else {
// slide the keyboard off to the side
//frame.origin.x = (keyboard.frame.origin.x + 320);
// slide the keyboard off
frame.origin.y = (keyboard.frame.origin.y - 264);
keyboard.frame = frame;
}
[UIView commitAnimations];
}
}
}
}
我在代码中写道,将屏幕左侧和底部的键盘解除。我不知道你最终resignFirstResponder
会发生什么,但是当你这样做时可能会重置键盘框架。
答案 1 :(得分:2)
如果有,那么iPhone API中没有记录。而且,你所要求的是没有意义的。您希望在UITextField中具有插入点。太好了。但你还想让键盘消失吗?那么关注焦点的文本域有什么意义呢?你打算如何在文本字段中输入数据?如果您想拥有自定义键盘,只需将其显示在键盘顶部即可。我想不出一个很好的理由,为什么你希望光标可见,但不有某种数据输入机制。这会打破UI惯例,甚至可能会拒绝您的应用。