0

我在横向视图中有一个 UITextField,当我按下 UIKeyboard 视图右下方的“关闭键盘”按钮时,键盘不会消失。有没有办法以编程方式侦听按下此键的时间?或者是否有我看不到的连接会使这个键盘消失?这是 iOS 4 和 XCode 4。谢谢。

4

3 回答 3

2

我今天遇到了同样的问题,我想知道它是否适用于 Apple 的 KeyboardAccessory 示例代码。所以我做了逆向工程。ViewController 不是我在我的案例中犯的错误。

在 UIApplicationDelegate 的实现中有应用程序的入口点,根视图控制器和窗口将被设置- (void) applicationDidFinishLaunching:(UIApplication *)application。如果您忘记将根 viewcontrollers 视图作为子视图添加到窗口,则关闭键盘按钮在您的应用程序的任何视图中都不起作用。

@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 文件中设置网点。

我不知道为什么这与键盘行为有关。但我的理论是,响应者链没有链接到窗口,但它需要。

于 2011-10-02T19:55:55.783 回答
0

您需要告诉接受键盘输入的文本字段不再是第一响应者。

[UITextField resignFirstRepsonder];
于 2011-05-28T00:40:26.450 回答
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];
        }
    }
}
于 2011-06-02T22:51:54.520 回答