我試圖通過僅僅觸摸視圖外部的UIPicker來解僱UIPickerView。我見過其他帖子,如this one,它解釋瞭如何在按下鍵盤之外時使用NotificationCenter關閉UIKeyboard。我想知道是否有類似的方式來做一個UIPickerView同樣的事情。現在我在UIActionSheet中使用完成按鈕,但我喜歡讓用戶選擇在視圖之外單擊的選項。 此外,我意識到使用「隱形按鈕」的想法,它的工作方式大致相同,我只是想看看是否有更優雅的解決方案。
在此先感謝。想要解除UIView中的UIPickerView而觸摸外部
1
A
回答
2
我已經通過創建自定義UIView,然後重寫UIView類的pointInside方法來完成此操作。這是每次UIView獲得觸摸通知時都會觸發的方法。當發生這種情況時,您可以查看觸摸是在視圖範圍內還是在視圖範圍之外。
例如您自定義的UIView看起來是這樣的:
CustomTouchUIView.h
#import
@protocol CustomTouchUIViewDelegate
- (void) uiViewTouched:(BOOL)wasInside;
@end
@interface CustomTouchUIView : UIView
// Properties
@property (nonatomic, assign) id delegate;
@end
CustomTouchUIView.m
#import "TOTouchUIView.h"
@implementation CustomTouchUIView
#pragma mark - Synthesize
@synthesize delegate;
#pragma mark - Touches
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if(point.x > 0 && point.x < self.frame.size.width && point.y > 0 && point.y < self.frame.size.height)
{
[delegate uiViewTouched:YES ];
return YES;
}
[delegate uiViewTouched:NO ];
return NO;
}
@end
我有一個可下載的例子/教程在線here
+0
這看起來不錯。我必須試一試。謝謝 – Vince613
相關問題
- 1. 觸摸UIView外
- 2. 在UITableViewController中隱藏UIPickerView而在外面觸摸
- 3. Swift iOS - 檢測觸摸拖動從外部輸入UIView UIView
- 4. Android的外部觸摸屏
- 5. 當我觸摸UIVIew
- 6. 在UIView中觸摸事件
- 7. 需要UIButton內部自定義UIView響應觸摸
- 8. UIView觸摸事件在屏幕底部未被解僱
- 9. 添加觸摸的UIView - Xamarin
- 10. 任何觸摸解除UIAlertView
- 11. iOS - 檢測UIView中的觸摸?
- 12. UIView中的多點觸摸事件
- 13. 全球UIView觸摸通知
- 14. UIView觸摸位置座標
- 15. UIView不處理觸摸
- 16. 在UIView上檢測觸摸
- 17. 避免UIView觸摸延遲
- 18. UIView完成觸摸編程
- 19. UIGestureRecognizer觸摸移動UIView
- 20. 將觸摸傳遞給UIView
- 21. UIView子類,觸摸事件
- 22. 在UIView上觸摸事件
- 23. 按鈕突然響應外部觸摸,而不是觸及內部
- 24. 想要在用戶觸摸顯示屏的左側部分時觸發事件
- 25. 識別僅在發生觸摸時創建的UIView的觸摸
- 26. IOS - 觸摸UIPickerView時關閉鍵盤
- 27. 直到觸摸發生才顯示UIPickerView
- 28. 想要在aem觸摸UI中根據需要製作圖像
- 29. 當我使用swift代碼在UISearchBar外部觸摸時,如何解除鍵盤
- 30. 在UIView外部拖動時觸發touchesEnded
這個問題有幾個答案,包括一個[這裏](http://stackoverflow.com/questions/6782639/closing-a-uipicker-in-an-iphone-app/6782899#6782899) – progrmr
我知道自定義按鈕並不是最優雅的,但它最容易做到,而不是浪費寶貴的時間來尋找不同的解決方案。用戶體驗是真正重要的,他們不會注意到差異。 –