[英]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.