ユーザーに対して長文を読んでもらいたい場合、「見せる」方法はいくつかあると思いますが、すぐに思いつくのはUIAlertView上でScrollViewを載せてテキストをスクロールさせる事ではないでしょうか。
今までに誰かが作っていると思ったのですが、オープンソースなプロジェクトを探しても見当たらなかったのと、UIAlertViewのカスタマイズが楽しくなってきたので自分で作ってしまいました。
公開に際しては、GitHubで公開させて頂きました。
使い方
GitHub - CH3COOH/ScrollAlertView: Customized Alert View for iOS. You can display a long text Alert View. から最新のプロジェクトをダウンロードしてきます。zip、gz、bz2それぞれ好きなフォーマットでダウンロードしてください。自前のプロジェクトで使用する際には、ScrollAlertView.hとScrollAlertView.mだけをインポートします。
スクリーンショットでは少し判りにくいですが、テキストの部分はスクロールします。
普通ににアラートを使用する(キャンセルボタン、ボタンが1つ)場合
ScrollAlertView* alert = [[ScrollAlertView alloc] initWithTitle:@"アラートのテスト" message:@"こんにちは ありがとう\nさよなら\nまた会いましょう" delegate:nil cancelButtonTitle:@"キャンセル" otherButtonTitles:@"ボタンその1",nil]; [alert show]; [alert release];
上記のコードを実行すると、このような表示になります。
なんらかのアクションを行う「ボタン」と何もアクションを起こさない「キャンセル」を表示した通常よく使うアラートです。
キャンセルボタンが1つだけの場合
ScrollAlertView* alert = [[ScrollAlertView alloc] initWithTitle:@"アラートのテスト" message:@"こんにちは ありがとう\nさよなら\nまた会いましょう" delegate:nil cancelButtonTitle:@"キャンセル" otherButtonTitles:@"ボタンその1",nil]; [alert show]; [alert release];
上記のコードを実行すると、このような表示になります。
少し寂しい感じがしますが、「キャンセル」ボタンのみが表示されています。このケースの場合、キャンセルではなくOKなどの方がしっくり来るかもしれませんね。
キャンセルボタンとボタンが2つの場合
ScrollAlertView* alert = [[ScrollAlertView alloc] initWithTitle:@"アラートのテスト" message:@"ああああああいいいいいうううううえええええおおおおおおかかかかかきききききくくくくく" delegate:nil cancelButtonTitle:@"キャンセル" otherButtonTitles:@"ボタン2", @"ボタン1", nil]; [alert show]; [alert release];
上記のコードを実行すると、このような表示になります。
「ボタン1」と「ボタン2」、そして一番下に「キャンセル」ボタンが表示されています。
カスタマイズする
あまり簡単には弄れるコードにはなっていないのですが、いくつかのモノについてはScrollAlertView.mの定義を変更するだけでカスタマイズが可能です。
表示するテキストの行数
文字数が多くて、表示可能なテキストの行数を超えてしまった場合、スクロールを行います。デフォルト値として3にしていますが、必要に応じて変更してください。
// テキストの行数 //#define TEXT_LINES (3) #define TEXT_LINES (2)
上記のコードを実行すると、このような表示になります。
一度に表示されるテキスト量が2行になったのが判りますでしょうか。
テキストの表示バランスはこれから調整していかないといけないところかなと思っています。もし誰かが使う機会があって、ラベルのバランスを調整して良い感じになったら教えて頂くか、もしくはフォークして頂けないでしょうか。きっと僕が喜びます。
途中、アドバイスをくれた@zorrilla_に感謝です!