方法一:
弹出UIModalPresentationFormSheet模式
- (IBAction)buttonPressed:(id)sender
{
NSLog(@"Show feedback view now!");
UIViewController *fbsheet = [[FeedbackSheet alloc] initWithNibName:@"FeedbackSheet" bundle:nil];
fbsheet.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:fbsheet animated:YES];
[fbsheet release];
}
但是当在UItextview软盘弹出之后,点击其他区域使用下面代码软盘无法隐藏
进查询资料之后发现重写disablesAutomaticKeyboardDismissal即可,该api在iOS (4.3 and later)
-(BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
方法二:
- (void)viewDidLoad
{
[super viewDidLoad];
UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[topView setBarStyle:UIBarStyleBlack];
UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] initWithTitle:@"收起键盘" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];
[doneButton setWidth:80];
NSArray * buttonsArray = [NSArray arrayWithObjects:btnSpace,doneButton,nil];
[doneButton release];
[btnSpace release];
[topView setItems:buttonsArray];
[feedbackContent setInputAccessoryView:topView];
}
-(IBAction)dismissKeyBoard
{
[feedbackContent resignFirstResponder];
}
方法三:
UINavigationController *nv = [[UINavigationController alloc] initWithRootViewController:searchVC];
nv.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:nv animated:YES];
UINavigationController必须用Category的方法实现如下方法,才可以让键盘消失
@interface UINavigationController (DismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal;
@end
@implementation UINavigationController (DismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
方法四: 此方法是能解决关闭键盘,可是苹果审核会拒绝使用该api
[tfd_UserName resignFirstResponder];//没起到键盘收起的效果
@try {
Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");
id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];
[activeInstance performSelector:@selector(dismissKeyboard)];
}
@catch (NSException *exception) {
NSLog(@"%@", exception);
}
方法五:
//关闭键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
想必大家都遇到过一个view上好多输入框,为了关闭弹出的软键盘要遍历然后调用resignFirstResponder的吧?今天竟然发现一个关键这个view上可能 打开的键盘很简单:[self.view endEditing:YES];
直接ok了。
方法六:
//关闭键盘
[[self findFirstResponderBeneathView:self] resignFirstResponder];
[[self findFirstResponderBeneathView:self] becomeFirstResponder];//打开键盘
- (UIView*)findFirstResponderBeneathView:(UIView*)view
{
// Search recursively for first responder
for ( UIView *childView in view.subviews ) {
if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] )
return childView;
UIView *result = [self findFirstResponderBeneathView:childView];
if ( result )
return result;
}
return nil;
}
弹出UIModalPresentationFormSheet模式
- (IBAction)buttonPressed:(id)sender
{
NSLog(@"Show feedback view now!");
UIViewController *fbsheet = [[FeedbackSheet alloc] initWithNibName:@"FeedbackSheet" bundle:nil];
fbsheet.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:fbsheet animated:YES];
[fbsheet release];
}
但是当在UItextview软盘弹出之后,点击其他区域使用下面代码软盘无法隐藏
进查询资料之后发现重写disablesAutomaticKeyboardDismissal即可,该api在iOS (4.3 and later)
-(BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
方法二:
- (void)viewDidLoad
{
[super viewDidLoad];
UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[topView setBarStyle:UIBarStyleBlack];
UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] initWithTitle:@"收起键盘" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];
[doneButton setWidth:80];
NSArray * buttonsArray = [NSArray arrayWithObjects:btnSpace,doneButton,nil];
[doneButton release];
[btnSpace release];
[topView setItems:buttonsArray];
[feedbackContent setInputAccessoryView:topView];
}
-(IBAction)dismissKeyBoard
{
[feedbackContent resignFirstResponder];
}
方法三:
UINavigationController *nv = [[UINavigationController alloc] initWithRootViewController:searchVC];
nv.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:nv animated:YES];
UINavigationController必须用Category的方法实现如下方法,才可以让键盘消失
@interface UINavigationController (DismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal;
@end
@implementation UINavigationController (DismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
方法四: 此方法是能解决关闭键盘,可是苹果审核会拒绝使用该api
[tfd_UserName resignFirstResponder];//没起到键盘收起的效果
@try {
Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");
id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];
[activeInstance performSelector:@selector(dismissKeyboard)];
}
@catch (NSException *exception) {
NSLog(@"%@", exception);
}
方法五:
//关闭键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
想必大家都遇到过一个view上好多输入框,为了关闭弹出的软键盘要遍历然后调用resignFirstResponder的吧?今天竟然发现一个关键这个view上可能 打开的键盘很简单:[self.view endEditing:YES];
直接ok了。
方法六:
//关闭键盘
[[self findFirstResponderBeneathView:self] resignFirstResponder];
[[self findFirstResponderBeneathView:self] becomeFirstResponder];//打开键盘
- (UIView*)findFirstResponderBeneathView:(UIView*)view
{
// Search recursively for first responder
for ( UIView *childView in view.subviews ) {
if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] )
return childView;
UIView *result = [self findFirstResponderBeneathView:childView];
if ( result )
return result;
}
return nil;
}