2011-08-26 23 views
0

確定我在此處發現此代碼是在stackoverflow它工作很好。但是我怎麼能在一個web頁面中通過一個html頁面上的按鈕來調用它,該頁面上也有事件詳細信息(日期時間地點)?如何從HTML按鈕調用此代碼並將其傳遞參數

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

有你的按鈕觸發包含要得到你的Web視圖的任何形式的數據POST請求,將其解壓縮: Programmatically add custom event in the iPhone Calendar

#import "EventTestViewController.h" 
#import <EventKit/EventKit.h> 

@implementation EventTestViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 

EKEventStore *eventStore = [[EKEventStore alloc] init]; 

EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
event.title  = @"EVENT TITLE"; 

event.startDate = [[NSDate alloc] init]; 
event.endDate = [[NSDate alloc] initWithTimeInterval:600 sinceDate:event.startDate]; 

[event setCalendar:[eventStore defaultCalendarForNewEvents]]; 
NSError *err; 
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];  
} 



- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [super dealloc]; 
} 

@end 

回答

0

你也許可以實現此UIWebViewDelegate方法做到這一點從你得到的NSURLRequest對象中,執行你的代碼並返回NO。

假設您的按鈕用於提交表單(它看起來像是這樣)。您將需要捕獲您的表單在我提到的委託方法中發送的請求,並解析NSURLRequest的-HTTPBody方法的返回值,該方法將成爲包含Web視圖中表單數據的字符串。

查看這裏發生了什麼的最好方法是實現該方法並在調試器中檢查請求對象。這應該讓你開始:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"%@", [request HTTPBody]); 
    return NO; 
} 

看看這裏的輸出,看看有什麼請求主體的模樣。通過一些搜索,你可能會發現一些代碼可以更直接的解析這個字符串。

如果您不想從NSURLRequest獲取信息,另一條路線是使用-stringByEvaluatingJavaScriptFromString:在Web視圖中執行一些JavaScript。如果你走這條路線,你只需要知道什麼時候按下按鈕,然後你就可以進入並使用JavaScript提取值。

另外需要注意的是,您可能希望在委託方法中添加一個檢查以確保您攔截正確的請求。一種方法是查看請求的-URL

+0

1)謝謝你對我有那麼多的信任,但你能否指點我在​​NSURLRequest提取物的教程方向。 2)如果有幾個按鈕調用相同的代碼但發送不同的參數,這將如何工作?這些按鈕位於html頁面上。 – Rick

+0

更新了我的答案並附加了一些建議。 –

+0

好酷我試試看 – Rick

相關問題