0

UIView現在のに a を追加していUIViewControllerます。UIView画面上の任意の場所に触れたときに a を削除する必要があります。に がありUIButtonますUIView。しかし、クリックUIButton すると もUIView削除されます。

実際には、UIViewクリックすると をcurrentview閉じて に移動するボタン (サインアウト) を追加しましたhomeViewController。しかし、現在のビューのボタン以外の場所をタップするとUIViewUIView削除する必要があります。しかし、私の場合、ボタンをクリックするUIViewと削除されます。

logout= [[UIView alloc]initWithFrame:CGRectMake(210,lbllogin.frame.origin.y+lbllogin.frame.size.height, 80, 50)];
logout.backgroundColor = [UIColor yellowColor];
btnSignout = [UIButton buttonWithType:UIButtonTypeCustom];
[btnSignout addTarget:self 
                action:@selector(aMethod:)
      forControlEvents:UIControlEventTouchDown];
btnSignout = CGRectMake(0,0,80,13);
[logout addSubview: btnSignout];
[self.view addSubview:logout];


        UIButton *btnsignout=[[UILabel alloc]init];
        [lblsignout setFrame:CGRectMake(0, 0, 80, 13)];
        lblsignout.textAlignment = NSTextAlignmentLeft;
        lblsignout.backgroundColor = [UIColor clearColor];
        lblsignout .font=[UIFont fontWithName:@"Helvetica-Bold" size:14];
        lblsignout.text=@"Sign out";

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [logout removeFromSuperview];

}
4

2 に答える 2

1

タッチされた場所を追跡する必要があります。つまり、ボタンのフレームでタップしたかどうかを確認する必要があります。ボタンの位置、つまりボタンのフレームをタップした場合は、removeFromSuperView を呼び出さないでください。それ以外の場合は、removeFromSuperView を呼び出します。

//pseudo code,not actual code
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

if( touches.x & touches.y is in button frame)
{
[logout removeFromSuperview];
}
else
{
[btnSignOut removeFromSuperview];
}

}
于 2013-02-04T12:05:59.340 に答える
0

この機能を追加するには、InterfaceBuilder-identity inspector - class に移動し、class UIControl. を設定してから、ViewController のメイン ビューを .h ファイルに ctr-drag で接続し、 inside.like でタッチアップ用のアクションを作成する必要があります。

- (IBAction)backgroundTapped:(id)sender;

および.mファイルで

 - (IBAction)backgroundTapped:(id)sender {
        //remove your view here
    [logout removeFromSuperview];
    }
于 2013-02-04T12:07:25.667 に答える