让键盘在SLComposeViewController中消失?

时间:2015-04-02 05:33:29

标签: ios objective-c xcode slcomposeviewcontroller

我一直试图让它在点击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时,会显示控制器的视图,然后是另一个视图,“组合窗口”放在控制器视图的顶部,这就是为什么我的点击手势不起作用(因为“撰写窗口”视图位于我指定了点按手势的视图的顶部。

任何见解都值得赞赏,如果需要更多信息,我很乐意提供。感谢。

0 个答案:

没有答案