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