OSDN Git Service

- Implemented getTextInput in IOSInput with UIAlertView.
authorAntti Kolehmainen <antionio@gmail.com>
Wed, 9 Jan 2013 17:00:01 +0000 (19:00 +0200)
committerAntti Kolehmainen <antionio@gmail.com>
Wed, 9 Jan 2013 17:00:01 +0000 (19:00 +0200)
backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSApplication.java
backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSInput.java

index 2b52a3c..69ce73d 100644 (file)
@@ -78,6 +78,7 @@ public class IOSApplication extends UIApplicationDelegate implements Application
 \r
        UIApplication uiApp;\r
        UIWindow uiWindow;\r
+       UIViewController uiViewController;\r
        ApplicationListener listener;\r
        IOSApplicationConfiguration config;\r
        IOSGraphics graphics;\r
@@ -134,8 +135,8 @@ public class IOSApplication extends UIApplicationDelegate implements Application
 \r
                // Create: Window -> ViewController-> GameView (controller takes care of rotation)\r
                this.uiWindow = new UIWindow(UIScreen.get_MainScreen().get_Bounds());\r
-               UIViewController uiViewController = new IOSUIViewController();\r
-               this.uiWindow.set_RootViewController(uiViewController);\r
+               this.uiViewController = new IOSUIViewController();\r
+               this.uiWindow.set_RootViewController(this.uiViewController);\r
 \r
                GL20 gl20 = config.useMonotouchOpenTK ? new IOSMonotouchGLES20() : new IOSGLES20();\r
                \r
@@ -144,7 +145,7 @@ public class IOSApplication extends UIApplicationDelegate implements Application
                \r
                // setup libgdx\r
                this.input = new IOSInput(this);\r
-               this.graphics = new IOSGraphics(getBounds(uiViewController), this, input, gl20);\r
+               this.graphics = new IOSGraphics(getBounds(this.uiViewController), this, input, gl20);\r
                this.files = new IOSFiles();\r
                this.audio = new IOSAudio(config.useObjectAL);\r
                this.net = new IOSNet(this);\r
@@ -158,7 +159,7 @@ public class IOSApplication extends UIApplicationDelegate implements Application
                this.input.setupPeripherals();\r
 \r
                // attach our view to window+controller and make it visible\r
-               uiViewController.set_View(graphics);\r
+               this.uiViewController.set_View(graphics);\r
                this.graphics.Run();\r
                this.uiWindow.MakeKeyAndVisible();\r
                Gdx.app.debug("IOSApplication", "created");\r
index 62719d6..4e65952 100644 (file)
@@ -21,12 +21,16 @@ import cli.MonoTouch.Foundation.NSSetEnumerator;
 import cli.MonoTouch.UIKit.UIAcceleration;\r
 import cli.MonoTouch.UIKit.UIAccelerometer;\r
 import cli.MonoTouch.UIKit.UIAccelerometerDelegate;\r
+import cli.MonoTouch.UIKit.UIAlertView;\r
+import cli.MonoTouch.UIKit.UIAlertViewDelegate;\r
+import cli.MonoTouch.UIKit.UIAlertViewStyle;\r
 import cli.MonoTouch.UIKit.UIEvent;\r
+import cli.MonoTouch.UIKit.UITextField;\r
 import cli.MonoTouch.UIKit.UITouch;\r
 import cli.MonoTouch.UIKit.UITouchPhase;\r
+import cli.MonoTouch.UIKit.UIView;\r
 import cli.System.Drawing.PointF;\r
 \r
-import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.Input;\r
 import com.badlogic.gdx.InputProcessor;\r
 import com.badlogic.gdx.utils.Array;\r
@@ -188,7 +192,56 @@ public class IOSInput implements Input {
 \r
        @Override\r
        public void getTextInput(TextInputListener listener, String title, String text) {\r
-               // FIXME implement this\r
+               final UIAlertView uiAlertView = buildUIAlertView(listener, title, text);\r
+               app.uiViewController.Add(uiAlertView);\r
+               uiAlertView.Show();\r
+       }\r
+       \r
+       /** Builds an {@link UIAlertView} with an added {@link UITextField} for inputting text.\r
+        * @param listener Text input listener\r
+        * @param title Dialog title\r
+        * @param text Text for text field\r
+        * @return UiAlertView */\r
+       private UIAlertView buildUIAlertView (final TextInputListener listener, String title, String text) {\r
+               UIAlertViewDelegate delegate = new UIAlertViewDelegate() {\r
+                       @Override\r
+                       public void Clicked (UIAlertView view, int clicked) {\r
+                               if (clicked == 0) {\r
+                                       listener.canceled();\r
+                               } else if (clicked == 1) {\r
+                                       UIView[] views = view.get_Subviews();\r
+                                       for (UIView uiView : views) {\r
+                                               if (uiView != null && uiView instanceof UITextField) {\r
+                                                       UITextField tf = (UITextField)uiView;\r
+                                                       listener.input(tf.get_Text());\r
+                                               }\r
+                                       }\r
+                               }\r
+                               view.Dispose();\r
+                       }\r
+\r
+                       @Override\r
+                       public void Canceled (UIAlertView view) {\r
+                               listener.canceled();\r
+                               view.Dispose();\r
+                       }\r
+               };\r
+\r
+               final UIAlertView uiAlertView = new UIAlertView();\r
+               uiAlertView.set_Title(title);\r
+               uiAlertView.AddButton("Cancel");\r
+               uiAlertView.AddButton("Ok");\r
+               uiAlertView.set_AlertViewStyle(UIAlertViewStyle.wrap(UIAlertViewStyle.PlainTextInput));\r
+               uiAlertView.set_Delegate(delegate);\r
+\r
+               for (UIView uiView : uiAlertView.get_Subviews()) {\r
+                       if (uiView != null && uiView instanceof UITextField) {\r
+                               UITextField tf = (UITextField)uiView;\r
+                               tf.set_Text(text);\r
+                       }\r
+               }\r
+\r
+               return uiAlertView;\r
        }\r
 \r
        @Override\r