dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

9VAeきゅうべえiPad版 アラートを使って複数行入力、GIF設定画面を作成

9VAeきゅうべえ開発記録

今日は、アラートを使って

  • 複数行の文字入力
  • アニメGIFの設定画面

を作った。

 

複数行の文字入力作成

UITextViewで複数行文字入力というのを試してみる。

UITextViewで複数行テキスト入力|ゆぅさんのiPhone開発技術関連ブログ

 

9VAeきゅうべえの文字や数値入力の仕組みは次のようになっている。

  1. 9VAeは、QvaeViewの中で勝手にエディタとして動いている。
  2. 文字や数値入力はOSの仕事なので、その時だけ、入出力用のメモリ領域に、欲しいデータの種類やそれに関連するデータを書き込み、応答を待つ。
  3. 欲しいデータの種類は番号(QVAioType)で指定し、qvaeDef.h に定義されている。

複数行の文字入力は、qVAcTXTinp(値は2)。この値で処理が止まっていたら、複数行の文字を入力し、次の setIoTex関数を使って入力値を伝えるという仕組みだ。

- (void) setIoText:(QVAioType)id text1:(NSString *)text;

 

さて、上のサンプルを入れると確かに複数行入力できるようになった。

が、UITextViewの外でタッチが反応してしまうし、UIAlertController を使った1行文字入力と比べると見栄えが悪い。

 

アラートの中に複数行テキスト入力を入れる方法がわかった

ios - Multiline editable text UITextview inside UIAlertController? - Stack Overflow

などを見ると、アラートの中に直接、UITextViewを入れることができるみたいだ。結局、以下のようにして、アラートの中で複数行テキスト入力できるようになった。UITextViewのサイズと位置指定が数値入力になっているのが気になるが、、Viewを追加するという方法を使うとアラートでかなりのことができそう。

    UIViewController  *mainView; //アプリ

    QvaeView  *qvaView;          //9VAeきゅうべえカスタムビュー

 

  { 

    UIAlertAction *actionCancel= [UIAlertAction actionWithTitle:@"キャンセル"

            style:UIAlertActionStyleCancel

            handler:^(UIAlertAction *action) {

                    [qvaView cancelIo];//キャンセルした時の処理

            }];

 

   NSString* mes = @"メッセージ";

   UITextView* tx = [[UITextView alloc]init];

            tx.frame = CGRectMake(20, 70, 230, 80);

            tx.text = [qvaView getIoText];

            tx.layer.borderColor = [UIColor blueColor].CGColor; //色

            tx.layer.borderWidth = 2.5f;    //線幅

            tx.layer.cornerRadius = 10.0f;  //縁を丸くする

            

    UIAlertController *alert = [UIAlertController

                      alertControllerWithTitle: @"タイトル"

                     message: [mes stringByAppendingString:@"\n\n\n\n\n"]

                      preferredStyle:UIAlertControllerStyleAlert];

            [alert.view addSubview:tx];    //複数行テキスト入力

            [alert addAction:actionCancel];  //キャンセルボタン

            [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

                [qvaView setIoText:id text1:tx.text];  //OKの時の処理

            }]];

            [mainView presentViewController:alert animated:YES completion:nil]; //表示

}

実行結果は以下の通り

f:id:dnjiro:20170913170431p:plain

同じようなことをやっている人がいた。表示のタイミングに苦労すると書いてある。実機だとそうなるのかも

[iOS]標準の UIAlertController で複数行入力する UITextView を利用する - Qiita

アラートの資料はこちら。

UIAlertController - UIKit | Apple Developer Documentation

 

アラートでアニメGIF設定画面を作ってみた

アラートの中に、UITextField や UISwitch を入れると、次のようなアラートもできた。タイトルの下のメッセージを

message:@"File name:\n\n\n\n\nPicture Size:(Width x Height)\n\n\n\n\nTime length(sec):\tFrame/sec: \n\n\n\n\nTransparent Background:\n\n\n"

として、改行を使って空白を作り、そこに UITextField や UISwitchを追加している。

f:id:dnjiro:20170913215923p:plain

背景を透明にするか、しないかの設定に、UISwitchを使った。

UISwitch - iPhoneアプリ開発の虎の巻

 

数字入力の時、数字のキーボードを出すようにした。

The iPhone's Virtual Keyboards: A Visual Catalogue - Global Nerdy - Joey deVilla's mobile/tech blog — Global Nerdy - Joey deVilla's mobile/tech blog

[iPhone] TextField UIKeyboardType を使う

設定された文字(NSString)から数値を取り出すには、以下のようにした。

勉強部屋: iPhone:NSString : 文字列を数値に、数値を文字列に変換