2010年11月5日金曜日

UIAlertViewにテキストボックスを追加する。

UIAlertViewにテキストボックスを追加する方法です。
あのパスワードを入力するダイアログみたいなやつ。

privateメソッドに下記のAPIがありそれを使うと実現可能だがRejectされてしまった。
(UndocumentedなAPIであるため)

- (UITextField*)addTextFieldWithValue:(NSString*)value label:(NSString*)label;
- (UITextField*)textFieldAtIndex:(NSUInteger)index;
- (NSUInteger)textFieldCount;
- (UITextField*)textField;

十分に調べて使用しなかったせいだが、確実にRejectされるので注意してください。
「見逃された」みたいな書き込みもあったんで、使ってみたが思いっきり却下されました。
(使っても大丈夫な時代もあったみたい?)

~~~追記1~~~

http://discussions.apple.com/thread.jspa?threadID=1674641&start=0&tstart=0
このURLの途中にある
TextAlertView.h
TextAlertView.m
というクラスで実現できました。

そのまま流用したらダイアログの位置が上部に行き過ぎていたり、テキストボックスが横にはみだしてしまったりしたので少し修正。
#define kUITextFieldHeight 30.0
#define kUITextFieldWidth 260.0 → 追加
#define kUITextFieldXPadding 12.0
#define kUITextFieldYPadding 10.0
#define kUIAlertOffset 100.0 → 10.0 修正

layoutSubviewsの「alertWidth - 2.0*kUITextFieldXPadding,」の部分を「kUITextFieldWidth」に修正

あとはUITextFieldの透過が気になったので、「myTextField.alpha = 0.75;」をコメントアウト

これでリリースしてみました。

~~ 追記2 ~~
無事AppStoreにリリースされました。

~~ 追記3 ~~
2011/12/06現在で上記方法は使用できなくなったようです。
修正してアプリをリリースしなおしました。

0 件のコメント:

コメントを投稿