Wednesday, July 25, 2012

UITextField でテキスト編集を無効にする

UITextField で編集を無効にしたい場合は UIControl の enabled プロパティを NO にします。

UITextField *textField = [[UITextField alloc] init];
textField.enabled = NO; 

他の UIControl 系でもこの方法でコントロールを無効にできます。UIButton の場合はビューが半透明になってくれますので、一時的に操作できないことがわかり便利です。UIWebView の goBack goForward のボタンのように、canGoBack canGoForward に合わせて enabled プロパティを 変更するケースで有効です。

#pragma mark UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    ....
    // 履歴の 戻る/進む ボタンの有効無効を設定
    goBackButton.enabled = webView.canGoBack;
    goForwardButton.enabled = webView.canGoForward;
}

半透明にしたくない場合には UIView の userInteractionEnabled プロパティで、タッチ操作を検知しないようにする方法もありま すが、不具合で反応しないボタンのように見えますので、enabled プロパティを使う方が良いでしょう。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoudedRect];
button.userInteractionEnabled = NO;