【发布时间】:2012-12-02 19:23:55
【问题描述】:
我正在使用 Cordova 2.2 for IOS 构建一个 PhoneGap 应用程序。在调用我编写的用于显示 MFMessageComposeViewController 的本机 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 覆盖看起来很棒,我的值已预先填充。下图展示了插入 XCode 时 SMS 界面看起来很好:
当我的 iPhone从我的 Mac 上拔下电源并从弹力板运行应用程序时,Overlay 向上滑动,键盘开始向上滑动,然后立即向下滑动 strong> - 无法输入或发送消息。这是未连接到 Mac/Xcode 时的样子 - 键盘开始向上滑动,然后立即向下滑动(~
我这辈子都想不通是什么原因导致键盘在不从 XCode 运行时会隐藏起来,但在它运行时却可以很好地工作。
有没有办法“强制”键盘显示,或者可能以某种形式或方式将整个 modalviewcontroller 作为第一响应者?
欢迎提出任何建议!
编辑:
如果您点击联系人区域,键盘将再次出现
【问题讨论】:
标签: iphone objective-c ios xcode cordova