2015年07月09日

UIButtonを押せないようにする

navigationItemのtitleに画像を表示する場合、そのままtitleViewにUIImageをUIImageViewに設定したものを設定すればよいが、titleにボタンや画像などを複数設定する場合、UIToolbarにボタンや画像を設定した上でtitleViewに設定する。
 
navigationItemのtitleViewにUIImageを設定。
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleLogo.png"]];


UIToolbarに画像を設定する場合、UIButtonにUIImageを設定、さらにUIBarButtonItemにUIButtonを設定、UIToolbarにUIBarButtonItemをItemsとして設定する。

タイトルとして画像をUIButtonに設定する場合、ボタンを押せなくする必要があり、UIButtonのenabledプロパティをNOにすればよいが、[UIButton setEnabled:NO];とするだけでは、タイトル画像をタップしたときに画像がハイライトしてしまう。

この場合は、UIButtonに画像を設定するときのforStateにUIControlStateNormalとUIControlStateHighlightedを設定したコードを2行記述すれば、タイトル画像をタップしても画像はハイライトしない。

// タイトル画像
UIImage *logoImage = [UIImage imageNamed:@"titleLogo.png"];

UIButton *customView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, logoImage.size.width, logoImage.size.height)];
[customView setBackgroundImage: logoImage forState:UIControlStateNormal];
[customView setBackgroundImage: logoImage forState:UIControlStateHighlighted];
[customView setEnabled:NO];

[customView addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem* titleLogo = [[UIBarButtonItem alloc] initWithCustomView:customView];

// ボタン
UIBarButtonItem *hogeButton = [[UIBarButtonItem alloc] initWithTitle:@"ボタン" style:UIBarButtonItemStylePlain target:self action:@selector(buttonAction:)];
sortButton.style = UIBarButtonItemStylePlain;

// スペーサー
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

// ツールバー
CGRect toolbarFrame = CGRectMake(0, 0, 320, 44); // ツールバー作成
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];

NSMutableArray *buttonItemArray = [NSMutableArray array];
[buttonItemArray addObject:hogeButton];
[buttonItemArray addObject:space];
[buttonItemArray addObject:titleLogo];
[buttonItemArray addObject:space];

[toolbar setItems:buttonItemArray];
toolbar.backgroundColor = [UIColor whiteColor];

// ナビゲーションバーのTitleViewにツールバーを設定
[self.navigationItem setTitleView:toolbar];



ラベル:apple iPAD IOS iPhone
posted by mobileDeveloper at 23:50 | Comment(0) | TrackBack(0) | UIButton | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック