由於在iOS 5.1上使用Xcode 4.3進行調試的速度非常慢,因此在設備上啓動/安裝應用程序時,我使用的模擬器啓動速度要快得多。 (見我的問題關於這個問題在這裏https://stackoverflow.com/questions/11541288/xcode-4-3-with-ios5-1-pauses-about-10secs-when-debug-starts-simulator-starts-i)在iPhone上模擬發送的短信
因此,所有我需要做的是這樣的:
MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = delegate;
NSString *s = @"1234567";
picker.recipients =[NSArray arrayWithObject: s];
picker.body =smsTxt;
if (simulationMode) {
MessageComposeResult result = MessageComposeResultSent; <-----------
[delegate messageComposeViewController:picker didFinishWithResult: result];
} else
[delegate presentModalViewController:picker animated:YES];
這裏的問題是,現在在iOS模擬器運行時MFMessageComposeViewController不能實例化並總是產生零。
有沒有辦法在iOS模擬器上創建另一個對象,它與MFMessageComposeViewController兼容,並可以像MFMessageComposeViewController一樣傳遞?
事情是這樣的:
MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = delegate;
NSString *s = @"1234567";
picker.recipients =[NSArray arrayWithObject: s];
picker.body =smsTxt;
if (simulationMode) {
MyOwnMFMessageComposeViewController *mypicker = [[MFMessageComposeViewController alloc] init];
mypicker.messageComposeDelegate = delegate;
NSString *s = @"1234567";
mypicker.recipients =[NSArray arrayWithObject: s];
mypicker.body =smsTxt;
MessageComposeResult result = MessageComposeResultSent;
picker = (MFMessageComposeViewController) mypicker;
[delegate messageComposeViewController:picker didFinishWithResult: result];
} else
[delegate presentModalViewController:picker animated:YES];
我將如何創建一個「模擬對象」,它產生的東西不是零時創建?我定義了一個MFMessageComposeViewController的子類,並寫了MyMFMessageComposeViewController * myPicker = [[MyMFMessageComposeViewController alloc] init]; - > myPicker仍然是零?謝謝! – user387184 2012-07-24 16:09:39
嗯......它可能是因爲它的子類不能在模擬器上工作,所以子類仍然是零。試試把它作爲nsobject的一個子類來響應你的委託協議 – Msencenb 2012-07-24 16:21:07
是的 - 但是它不會和MFMessageComposeViewController具有相同的結構,而且我不能強制它成爲MFMessageComposeViewController,所以我不能調用[delegate messageComposeViewController:picker didFinishWithResult:result]; - 這是我真正需要做的 – user387184 2012-07-24 16:22:59