iphone - 键盘显示然后在显示 MFMessageComposeViewController 时立即隐藏自己

标签 iphone objective-c ios xcode cordova

我正在使用适用于 IOS 的 Cordova 2.2 构建一个 PhoneGap 应用程序。在调用我编写的用于显示 MFMessageComposeViewController 的 native obj-c 插件时,我遇到了一些奇怪的行为。

设置非常简单 - 我有一个附加到 UI 元素的点击事件,当按下时,将调用我的 PhoneGap 插件,传递一个数字和一条文本消息,然后显示带有参数的 MFMessageComposeViewController预填充。

我的 javascript 看起来像这样:

$(document).bind('deviceready', function(){ 

    $(".theButton").tap(function(){     

        cordova.exec(function(){}, function() {}, "PhoneGapSms", "SendSms", [db.getItem("profile_sms"), db.getItem("profile_emergency")]);

    }); 
});

我的 obj-c 代码如下所示:

- (void)SendSms:(CDVInvokedUrlCommand*)command
{

    CDVInvokedUrlCommand* myCommand = command;

    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

    NSString* body = [command.arguments objectAtIndex:0];
    NSString* toRecipientsString = [command.arguments objectAtIndex:1];

        if(body != nil)
            picker.body = body;

        if(toRecipientsString != nil)
            [picker setRecipients:[ toRecipientsString componentsSeparatedByString:@","]];


    picker.messageComposeDelegate = self;

    [self.viewController presentModalViewController:picker animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];


    [picker release];

}

所以,总而言之,非常简单的事情。

我的问题是:

当我的 iPhone 插入我的 Mac 并且该应用程序从 XCode 运行时,Message Composer 叠加层看起来很棒,我的值已预先填充。下图演示了 SMS 界面在插入 XCode 时显示良好:

enter image description here

当我的 iPhone 从我的 Mac 上拔下,应用程序从跳板运行时,Overlay 向上滑动,键盘开始向上滑动,然后立即向下滑动 strong> - 无法输入或发送消息。这是未连接到 Mac/Xcode 时的样子 - 键盘开始向上滑动然后立即向下滑动(~ < 1 秒),留下以下界面:

enter image description here

我这辈子都想不出是什么导致键盘在不从 XCode 运行时隐藏,但在它运行时却运行良好。

有没有办法“强制”键盘显示,或者可能以某种形式或方式将整个 modalviewcontroller 作为第一响应者?

如有任何建议,我们将不胜感激!

编辑:

如果您点击接触区域,键盘将再次出现

最佳答案

您必须添加 MessageUI.framework到您的 Xcode 项目并包含一个

#import <MessageUI/MessageUI.h>在你的头文件中。

试试这个代码可能对你有帮助..

[self presentModalViewController:picker animated:YES];
//[self becomeFirstResponder];//try picker also instead of self

另请参阅下面的教程并检查演示..

  1. new-tutorial-developing-and-architecting-a-phonegap-application

  2. SMSComposer

希望对你有帮助...

关于iphone - 键盘显示然后在显示 MFMessageComposeViewController 时立即隐藏自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884672/

相关文章:

iphone - 将自签名证书添加到 iPhone 模拟器?

设备上的 iOS 8 自定义键盘

objective-c - 在 OpenGLES 中使用三角形扇形绘制多边形

ios - 打开手机应用程序而不调用电话

iphone - 多语言应用程序与许多应用程序

objective-c - 将可编写脚本的属性添加到派生自 NSObject <NSApplicationDelegate> 的 Cocoa 应用程序?

ios - 了解一对多的核心数据删除规则

c# - UICollectionViewCell 定义 F#

ios - iOS 上 Safari 中 <select> 元素上消失的箭头和样式

IOS - Android 的 Smack API 库可以用于 IOS 连接到 Ejabberd 服务器吗?