簡體   English   中英

如何以編程方式將UIView或UIImageView與“內部觸摸”等事件相關聯?

[英]How can I programmatically link an UIView or UIImageView with an event like “touch up inside”?

Interface Builder只允許我為按鈕掛鈎這樣的事件。 但就像在HTML中一樣,我只想避開一個空白的UIImageView - 只要用戶點擊它 - 就會調用一個方法。 我希望有一些很酷的編程方式,我不知道。

更新:

在我創建UIImageView的View Controller中,我嘗試這樣做:

SEL actionSelector = @selector(doSomethingWhenImageIsTouched:);
[self.myUIImageView addTarget:nil action:actionSelector forControlEvents:UIControlEventTouchUpInside];

編譯器給我一個警告,UIImageView可能無法響應addTarget:...我需要做什么才能使它與UIImageView一起使用。 我在文檔中看到UIImageView不從UIControl繼承,但addTarget:是UIControl的一部分。

更新:

我在創建UIImageView后最終創建了一個UIButton。 然后我將該按鈕的框架設置為UIImageView的框架,並將alpha設置為0.1f。 出於某種原因,如果alpha為0.0f,它將無法工作。 然后,我做了那個很酷的addTarget:事情......

在SDK版本3.2(可能更早,我不知道),您可以添加手勢識別器到UIView。 UIGestureRecogniser是一個抽象類,允許您定義手勢(點擊,捏合,滑動等)並將其添加到UIView中,當手勢識別器識別出手勢時,它會觸發對您所需目標的動作。

在文檔中閱讀所有相關內容......:D

這里不可能使用Target-Action Model,因為UIImageView不是從UIControl繼承的,而是UIButton,它是從UIView派生的。 因此,如果您想要跟蹤視圖或圖像視圖上的觸摸,首先必須自定義類,然后將觸摸開始事件放入其中並執行操作。 否則使用可能對你有幫助的UIGestures

UIViews通常不需要IBAction出口來接收觸摸事件。 通常,如果視圖受viewController控制,則可以使用touchesBegan方法檢查UITouch事件。 要設置控制操作的目標和選擇器,您還可以使用:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM