我可能失去了一些東西,但是......TouchUpInside上的UIView兒童
我有幾個孩子UIView
(一對夫婦的UILabel
的和UIImageView
)。我需要當用戶點擊(抽頭)來捕捉事件父UIView
內的任何地方 - 在UIView
或其任何子女)的可見部分。
這樣做的最好方法是什麼?
我可能失去了一些東西,但是......TouchUpInside上的UIView兒童
我有幾個孩子UIView
(一對夫婦的UILabel
的和UIImageView
)。我需要當用戶點擊(抽頭)來捕捉事件父UIView
內的任何地方 - 在UIView
或其任何子女)的可見部分。
這樣做的最好方法是什麼?
您可以在Identity Inspector中更改UIView的類...使其成爲UIControl
,然後您可以爲您的視圖添加一個事件UITouchUpInside
- 以獲取它的點擊。
祝你好運!
編輯:這裏是一個一步一步用截圖:
的觀點...
...當然,沒有事件。
回去改的UIView與UIControl和...
的Ta-DAA!活動!
鉤到UITouchUpInside事件的方法
這是應該的樣子在接口文件
這是應該看起來像在實現文件(可以,當然,用任何你想要的東西來代替伐木)
由於有多個選項,您必須提供更多的細節。
如果你想正常的自來水,你可以趕上標準的觸摸事件之一,看看子視圖得到了該事件。事情是這樣的:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if(touch.view != self.mySubViewOfInterest)
{
// perform my actions
}
}
如果需要複雜的手勢識別,那麼你可以使用UIGestureRecognizer之一,並把它分配給子視圖或主視圖。
無論如何,您必須注意,所有子視圖(您希望他們捕捉事件的子視圖)必須啓用用戶交互,否則您的主視圖也會捕獲子視圖的事件,最終您將調試並調試時不知道發生了什麼。
可以通過讓你的父視圖手勢識別器,並確保你的孩子沒有自己的手勢識別器假死這種行爲。爲此,請向您的父母UIView
添加手勢識別器,以偵聽輕敲。其中parentView
是爲您的孩子的意見(UILabels
/UIImageView
)和handleTap
含有看法是parentView
實現的方法,這樣做:
UIGestureRecognizer *tapParent = [[UITapGestureRecognizer alloc]initWithTarget:parentView action:@selector(handleTap)];
[parentView addGestureRecognizer:tapParent];
[tapParent release];
隨着孩子的觀點並不擁有自己的手勢識別器,他們不會'吃'的姿態,所以只要你在其範圍內點擊,父視圖就會響應。
這適用於我
斯威夫特3
let gesture = UITapGestureRecognizer(target: self, action: selector(self.customViewClick))
withSender: self)
customView.addGestureRecognizer(gesture)
func customViewClick() {
print("custom view clicked!")
}
您正在使用的Xcode 4? – Sirens