fc2ブログ

[iPhone]UITextFieldにコピー/ペーストメニューを出さないようにする

コピーペーストメニューを出さないようにするにはこうする。


-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
UIMenuController *menuController = [UIMenuController sharedMenuController];
if (menuController) {
[UIMenuController sharedMenuController].menuVisible = NO;
}
return NO;
}


UITextFieldを含むUIViewController.mに上記のメソッドを実装すればよい。

スポンサーサイト



[iPhone]UIWebViewに自己署名証明書を許可させる方法

UIWebViewを使ったアプリとサーバーを組み合わせたシステムを開発するようなケースで。

サーバー側で正式な証明書が用意できていない段階で、テストしなければならないような時、
自己署名証明書をとりあえず無視したいことがあると思う。

合法な方法では(現時点では)不可能らしい。
一時的にテストを進めるため、undocumented な方法ではあるが、
以下のような方法がある。

How to ignore ssl certificate challenge with UIWebView and NSUrlRequest? - General discussion - MonoTouch Forums



@interface NSURLRequest(SSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;
@end

@implementation NSURLRequest(SSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host {
// do some filter based off of "host" here
return YES;
}
@end


つまり、NSURLRequestのカテゴリによって、システムの挙動を変えてしまうという作戦だ。

アンドキュメンテッドな方法なので、ほぼ確実に正式アプリとしては登録できない、
という点にはくれぐれも注意が必要だ。

[iPhone]URLエンコードする方法

iPhone SDK でURLエンコードするには、以下のように、
CFURLCreateStringByAddingPercentEscapes を使う。
第3パラーメータに、エンコード除外文字を指定するのがポイント。


NSString* encodedUrl = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)urlString,
CFSTR(";,/?:@&=+$#"),
NULL,
kCFStringEncodingUTF8);

[iPhone]IBを使わずコード内でUITextFiledのsecureプロパティ等をセットする方法

以下のように、UITextFiledのプロパティにセットすれば良い。
のだが、これらのプロパティのドキュメントが見当たらないぞ?と思ったところ、
これらのプロパティは UITextFiled そのものではなく、UITextInputTraits
というプロトコルとして定義されているらしいので、UITextInputTraits の
ドキュメントを調べる必要がある。

UITextField* textField = ほげ;
[textField setKeyboardType:UIKeyboardTypeASCIICapable];
[textField setReturnKeyType:UIReturnKeyDone];
textField.secureTextEntry = YES;

[iPhone]文字列をURLエンコードする方法

UIWebView等に渡すためのURL文字列を、URLエンコードするには、以下のように
CFURLCreateStringByAddingPercentEscapes を使う。
第3パラメータに、エスケープ対象外の文字をしてしている点がポイント。

NSString* encodedUrl = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)urlString,
CFSTR(";,/?:@&=+$#"),
NULL,
kCFStringEncodingUTF8);