Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



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 はてなブックマーク - UIButtonを押せないようにする | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。