2011-08-05 7 views
1

UIViewにビューの外側をタッチするだけでUIPickerViewを終了しようとしています。私はthis oneのような他の投稿を見てきましたが、キーボードの外を押すときにNotificationCenterを使用してUIKeyboardを閉じる方法について説明しています。私は、UIPickerViewで同じことをする同様の方法があるかどうかを知りたいと思います。今はUIActionSheetの中に完了ボタンを使用していますが、私はユーザーにビューの外をクリックするという選択肢を与えたいと思っています。 また、同じ方法で動作する「見えないボタン」を使用するというアイデアも気づいています。より洗練されたソリューションがあるかどうかを探していました。
ありがとうございます。外部に触れている間にUIViewでUIPickerViewを終了したい

+0

この質問にはいくつかの回答があります。[こちら](http://stackoverflow.com/questions/6782639/closing-a-uipicker-in-an-iphone-app/6782899#6782899) – progrmr

+0

カスタムボタンは最もエレガントではありませんが、別の解決策を見つけようとする貴重な時間を無駄にする代わりに行うのが最も簡単です。ユーザーエクスペリエンスは実際に重要なものであり、差異に気付かないでしょう。 –

答えて

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 

私はオンラインのダウンロード例/チュートリアルを持って

#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 

CustomTouchUIView.m here

+0

これはよさそうだ。私は試してみる必要があります。ありがとう – Vince613

関連する問題