我一直试图让它在点击SLComposeViewController
的屏幕时(例如点击背景时),键盘消失。有几个关于如何使用常规UIViewController
和文本字段执行此操作的教程,但我似乎无法使其适用于SLViewController
。这是基本的想法:
我有一个SocialViewController
类派生自SLComposeViewController
类,当在屏幕上按下正确的按钮时,我这样做:
SocialViewController *socialViewController = [[SocialViewController alloc] initFacebookViewController];
if ( !(socialViewController == nil) )
{
[self.view.window.rootViewController presentViewController:socialViewController.fbController
animated:YES
completion:nil];
}
这是我的initFacebookController所做的:
@interface SocialViewController ()
@end
@implementation SocialViewController
@synthesize fbController;
-(id) initFacebookViewController {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
// I have been trying to make this part work
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:fbController
action:@selector(clickBackground:)];
[fbController.view addGestureRecognizer:tap];
return self;
}
else
{
UIAlertView *notLoggedIn = [[UIAlertView alloc]
initWithTitle:@"Not Signed In"
message:@"Please login."
delegate:self
cancelButtonTitle:@"Done"
otherButtonTitles:nil, nil];
[notLoggedIn show];
return nil;
}
}
最后,当我点击屏幕(使用clickedBackground选择器)时,我想重新键盘,但是,我一直试图让它打印到日志中:
- (void)clickBackground:(UITapGestureRecognizer *)tap {
//resign the keyboard here, and lately been trying to print to the log.
//[fbController resignFirstResponder];
}
这不会是一个问题,但我的应用程序假设用于横向。 iPhone 4和5的键盘没有像iPhone 6键盘那样的“停止显示键盘”按钮,而且很难看到复合窗口。我已经尝试了多种其他方法但无济于事,如果有人对我在屏幕被点击时如何使键盘消失在SLComposeViewController
中有所了解,我将不胜感激。
另外,我注意到另一个注意事项。看来当显示SLComposeViewController
时,会显示控制器的视图,然后是另一个视图,“组合窗口”放在控制器视图的顶部,这就是为什么我的点击手势不起作用(因为“撰写窗口”视图位于我指定了点按手势的视图的顶部。
任何见解都值得赞赏,如果需要更多信息,我很乐意提供。感谢。