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;