Implement prompt, confirm, and query for ios.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4525 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		
							
								
								
									
										41
									
								
								src/ios.m
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								src/ios.m
									
									
									
									
									
								
							| @@ -1,6 +1,7 @@ | ||||
| #include "log.h" | ||||
|  | ||||
| #import <UIKit/UIKit.h> | ||||
| #import <WebKit/WKUIDelegate.h> | ||||
| #import <WebKit/WKWebView.h> | ||||
| #import <WebKit/WKWebViewConfiguration.h> | ||||
|  | ||||
| @@ -9,19 +10,55 @@ | ||||
|  | ||||
| void tf_run_thread_start(const char* zip_path); | ||||
|  | ||||
| @interface ViewController : UIViewController | ||||
| @interface ViewController : UIViewController<WKUIDelegate> | ||||
| @property(strong, nonatomic) WKWebView* web_view; | ||||
| @end | ||||
|  | ||||
| @implementation ViewController | ||||
| @implementation ViewController : UIViewController | ||||
| - (void)viewDidLoad | ||||
| { | ||||
| 	[super viewDidLoad]; | ||||
| 	WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init]; | ||||
| 	self.web_view = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; | ||||
| 	self.web_view.UIDelegate = self; | ||||
| 	[self.web_view loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:12345/"]]]; | ||||
| 	[self.view addSubview:self.web_view]; | ||||
| } | ||||
|  | ||||
| - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler | ||||
| { | ||||
| 	UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:nil preferredStyle:UIAlertControllerStyleAlert]; | ||||
| 	[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { completionHandler(true); }]]; | ||||
| 	[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(false); }]]; | ||||
| 	[self presentViewController:alertController animated:YES completion:^{}]; | ||||
| } | ||||
|  | ||||
| - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler | ||||
| { | ||||
| 	UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:nil preferredStyle:UIAlertControllerStyleAlert]; | ||||
| 	[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { completionHandler(); }]]; | ||||
| 	[self presentViewController:alertController animated:YES completion:^{}]; | ||||
| } | ||||
|  | ||||
|  | ||||
| - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString *))completionHandler | ||||
| { | ||||
| 	NSString *sender = [NSString stringWithFormat:@"%@", self.web_view.URL.host]; | ||||
|  | ||||
| 	UIAlertController *alertController = [UIAlertController alertControllerWithTitle:prompt message:sender preferredStyle:UIAlertControllerStyleAlert]; | ||||
| 	[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { | ||||
| 		textField.placeholder = defaultText; | ||||
| 		textField.text = defaultText; | ||||
| 	}]; | ||||
| 	[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { | ||||
| 		NSString *input = ((UITextField *)alertController.textFields.firstObject).text; | ||||
| 		completionHandler(input); | ||||
| 	}]]; | ||||
| 	[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { | ||||
| 		completionHandler(nil); | ||||
| 	}]]; | ||||
| 	[self presentViewController:alertController animated:YES completion:^{}]; | ||||
| } | ||||
| @end | ||||
|  | ||||
| @interface AppDelegate : UIResponder<UIApplicationDelegate> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user