[iPhone SDK] UILabel からポップアップメニューを表示してみる
今作っているアプリに UILabel を複数置いた画面があるが、その UILabelたちは編集はできなくてよいが、コピーは可能にしたい。
ということで、検索してみたら Stack Overflow で見つかった。
いつもながら、Stack Overflowは見つからない質問はないのではないかと思えるくらい質問と回答が充実している。
で、この通りにUILabelを継承したCopyableLabelを作ればよいのだけれども、この通りにやるとUILabelのサイズの中央にUIMenuControllerのメニューが表示されてしまうので、Interface BuilderでUILabelのサイズを余裕を持って配置している場合には違和感のある表示になってしまう。
ということで、UILabel中の文字列のサイズを取ってきてそのサイズの中央に表示するように変えてみた。
あとは、コピーした際にコピーした範囲が分かるようになにかアニメーションがあった方がよいだろう、ということでalphaの値を0から1.0までアニメーションさせてみた。
ということで一応変更部分を抜き出してみる。
- (void)copy:(id)sender { UIPasteboard *board = [UIPasteboard generalPasteboard]; [board setString:self.text]; self.highlighted = NO; // animation [self setAlpha:0.0f]; CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationDuration:0.8]; [self setAlpha:1.0f]; [UIView commitAnimations]; [self resignFirstResponder]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if([self isFirstResponder]) { self.highlighted = NO; UIMenuController *menu = [UIMenuController sharedMenuController]; [menu setMenuVisible:NO animated:YES]; [menu update]; [self resignFirstResponder]; } else if([self becomeFirstResponder]) { UIMenuController *menu = [UIMenuController sharedMenuController]; // use text size for UIMenuController CGSize textSize = [[self text] sizeWithFont:[self font]]; CGRect rect = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, textSize.width, textSize.height); [menu setTargetRect:rect inView:self]; [menu setMenuVisible:YES animated:YES]; } }
UIMenuControllerや、UIPasteBoard の話は所さんの本にわかりやすく載っていた。参考まで。
また、ポップアップメニューをカスタマイズして独自のメニューを表示したい人は、こちらを参照すると良い。
こちらも Stack Overflow の情報。
iPhoneプログラミングUIKit詳解リファレンス | |
![]() |
所 友太 京セラコミュニケーションシステム株式会社
リックテレコム 2010-01-12 |
関連記事
-
-
タッチ! アメリカ地図 1.0.1 アップデート
タッチ! アメリカ地図 のアップデート(バージョン 1.0.1)を8月から5ヶ月ぶりにApp Sto
-
-
Corona SDK を試してみた
どうやら結構いまさらなようだが、Corona SDK を試してみた。 Corona SDK は同じソ
-
-
Androidアプリ紹介本 「Androidアプリ事典512」
Androidアプリにどんなものがあるのかをほとんど知らない しかしAndroidマーケ
-
-
超初心者に最適 フォトショップのドリル! 長谷川アンナ
Photoshop初心者の自分には残念ながらPhotoshopデザインラボは全くついて行けなかったの
-
-
Apple Watch 対応アプリようやくSubmit完了
ようやく Apple Watch 対応したアプリのSubmitが完了した。 とりあえずの対
-
-
iPhone SDKでユーザデータをローカルに保存したい
一応5日より次のiPhoneアプリの開発を始めた。 前回のアプリはアプリの設定をちょこっとローカルに
-
-
iOS9からGKSession over Bluetoothが無効に
ユーザの方からおんぷ先生アプリが接続できないという報告があり調べていたところ、iOS9からGameK
-
-
はじめてのiPhoneプログラミング 正誤表
発売されてからすぐ はじめてのiPhoneプログラミング を購入し、必要に応じて少しずつ読み進めてい
-
-
アップルiPodイベント 2009.9.9
9月9日のアップルのiPodイベント rock and roll が迫ってきた。 しばらく前から楽し
-
-
開発用iPad比較検討2016
手持ちのiPad2およびiPad mini 初代がiOS10のサポート対象から外れてしまったので、i