platform/iphone/Classes/WebViewController.m in rhodes-1.5.2 vs platform/iphone/Classes/WebViewController.m in rhodes-1.5.3
- old
+ new
@@ -39,31 +39,40 @@
@interface UIBarButtonItemAction : NSObject
{
WebViewController *wc;
NSString *url;
+ bool callback;
}
@property (nonatomic,copy) NSString *url;
-- (id)init:(WebViewController*)w url:(NSString*)u;
+- (id)init:(WebViewController*)w url:(NSString*)u callback:(bool)c;
- (void)onAction:(id)sender;
@end
@implementation UIBarButtonItemAction
@synthesize url;
-- (id)init:(WebViewController *)w url:(NSString*)u {
- self->wc = w;
+- (id)init:(WebViewController *)w url:(NSString*)u callback:(bool)c {
+ wc = w;
self.url = u;
+ callback = c;
return self;
}
+- (void)doAction {
+ if (callback)
+ rho_net_request([url UTF8String]);
+ else
+ [wc navigate:url];
+}
+
- (void)onAction:(id)sender {
- [wc navigate:url];
+ [self performSelectorOnMainThread:@selector(doAction) withObject:nil waitUntilDone:NO];
}
@end
@@ -166,13 +175,18 @@
btn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil action:nil];
}
else {
+ bool callback = false;
+ if ([url length] > 9 && [[url substringToIndex:9] isEqual:@"callback:"]) {
+ callback = true;
+ url = [url substringFromIndex:9];
+ }
NSString *u = [NSString stringWithUTF8String:rho_http_normalizeurl([url UTF8String])];
- UIBarButtonItemAction *action = [[UIBarButtonItemAction alloc] init:self url:u];
- if (!img) {
+ UIBarButtonItemAction *action = [[UIBarButtonItemAction alloc] init:self url:u callback:callback];
+ if (img) {
btn = [[UIBarButtonItem alloc]
initWithImage:img style:UIBarButtonItemStylePlain
target:action action:@selector(onAction:)];
}
else if ([label length] > 0) {
@@ -272,10 +286,10 @@
CGRectGetWidth(mainFrame),
CGRectGetHeight(mainFrame) - CGRectGetHeight(tbFrame));
webView = [[UIWebView alloc] initWithFrame:wvFrame];
webView.scalesPageToFit = YES;
webView.userInteractionEnabled = YES;
- webView.detectsPhoneNumbers = YES;
+ //webView.detectsPhoneNumbers = YES;
webView.multipleTouchEnabled = YES;
webView.autoresizesSubviews = YES;
webView.delegate = self;
[window addSubview:webView];