.14 2012

UIView上のボタンと背景にあるボタンのタップについて

お久しぶりの投稿です。江原です。

入社させていただいて半年
日々すばらしい経験をさせていただいて本当に感謝しています!

一日も早くもっと戦力になれればと
頑張って行きたいと思います。

今日はUIViewとタップイベントについて調べてみたいと思います。

まず。。。
透明(又は半透明)のUIViewの後ろに
ボタンを配置して押下させたいとき
UIView_hitTest.png
↑う〜んやはり、UIButtonは押せません。
手前のUIViewがイベントを処理した為です。

そこでUIViewのuserInteractionEnabledをNOにして
タップイベントを無視すると
背景のUIButtonにイベントを透過する事が出来ます。


でもこの方法ですと
透過した手前のUIViewにUIButtonを配置した場合に
UIView_hitTest002.png

↑UIView上のボタンがタップできません。。


親のViewがuserInteractionEnabled=NOだと
その上に配置されるview(subView)は押下イベントが発生しないようです。


そこでuserInteractionEnabledをYESにて
subviewのイベントを発生させつつ
自身のUIViewのイベントのみを透過させる方法を調べました。

// HitTestView.h
// UIViewを継承して自身のみ透過させ
// サブビューのイベントは破棄しないViewを作る
#import <UIKit/UIKit.h>
    @interface HitTestView : UIView
@end

// HitTestView.m
#import "HitTestView.h"
@implementation HitTestView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// 現在イベントが発生しているViewを取得
UIView *nowHitView = [super hitTest:point withEvent:event];

// 自分自身(UIView)だったら透過して(nilを返すとイベントを取得しなくなる)
if ( self == nowHitView )
{
return nil;
}

// それ意外だったらイベント発生させる
return nowHitView;
}
@end

こんな感じでUIViewのhitTestをオーバライドすれば
背景と自身の上に存在するUIButtonが押下できるみたいですね。

.20 2012

NSJSONSerialization使ってみた

こんにちわ、花粉症がだいぶ落ち着いてきて一安心なHAYABUSAです。
今年も気づけばもう4月半ば、早いもんですね〜。

今回はiOS5から追加されたJSON用クラスのNSJSONSerializationを試してみました。

.19 2012

ローカライズ言語を追加するときの落とし穴

はい、新年度はじまりました。
いろいろあった昨年度でしたが、みなさまいかがお過ごしでしょうか?

はい、UTOです。
4月からこのブログ担当順番が一新しましたが、
私は相変わらずの一番です。

さて、結構前に陥ったミスの内容を話したいと思います。
.14 2012

recursiveDescription

最近どう?パスタ巻いてる?HAYABUSAです。

PSPのアナログが復活しました。
分解した上、無水エタノールという魔法の薬で拭きまくったら絶好調になりました♪

…そんな小ネタはさておきですが、今回の内容も小ネタですw
.02 2012

iOS向けフレームワークを作る(2)

Tasakiです。


2012年も早いもので3月に入りました。
来週にも新型iPadの発表会(未確定)が迫り、iOS5.1リリースも近づいてきていると予想されます。


さて、今回は前回に続き、Xcode4.3でのフレームワーク作成をやってみようと思います。
 HOME 

ブログ内検索

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • HAYABUSA:
    ...


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    ...


  • Matsuda:
    ...


  • Oogami:
    ...



リンク