我在横向视图中有一个UITextField,当我按下UIKeyboard视图右下方的“关闭键盘”按钮时,键盘不会消失。有没有办法以编程方式侦听按下此键的时间?或者是否有一个我没看到的连接会使这个键盘消失? 这是iOS 4和XCode 4.谢谢。
答案 0 :(得分:2)
我今天遇到了同样的问题,我想知道,它可以在Apple的KeyboardAccessory示例代码中使用。 所以我做了逆向工程。 ViewController不是我在我的案例中犯的错误。
在UIApplicationDelegate的实现中,有应用程序的入口点,其中将设置根视图控制器和窗口- (void) applicationDidFinishLaunching:(UIApplication *)application
。如果您忘记将根视图控制器视图添加到窗口作为子视图,则dismiss-keyboard-button将无法在您的应用程序的任何视图中使用。
@class ViewController;
@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ViewController *viewController;
@end
...
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
请不要忘记在主xib文件中设置插座。
我不知道为什么这与键盘行为有关。但我的理论是,响应者链没有链接到窗口,但它需要。
答案 1 :(得分:0)
你需要告诉接受键盘输入的文本字段不再是第一个响应者。
[UITextField resignFirstRepsonder];
答案 2 :(得分:0)
要使用关闭键盘按钮关闭键盘,您需要实现委托方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//Check if your text field is first responder, and if it is, have it resign
}
或者,如果您想通过点击键盘来解除键盘,请使用
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UIView* view in self.view.subviews)
{
if ([view isKindOfClass:[UITextField class]]) {
[view resignFirstResponder];
}
if ([view isKindOfClass:[UITextView class]]) {
[view resignFirstResponder];
}
}
}