2012-04-29 4 views
0

これは過去6ヶ月間このフォーラムに潜んでいましたが、ここで初めて役立つ質問です。ここでは単純なものと私は以前何度も尋ねられていることを知っていますが、どれも本当に助けとなる簡単な答えがありません。親切にも十分な人が私と他の多くの人々を助けてくれることを助けてくれることを願っています。Xcodeで1回のタップジェスチャーを使用してボタンやコンセントを非表示/非表示にする

ので、これは私がすでに店舗を隠すためにやったことです:

@interface tapgestureViewController : UIViewController { 

IBOutlet UIButton *btn1; 
IBOutlet UIButton *btn2; 
IBOutlet UITextView *text; 

} 

-(IBAction)hideOutlets; 

@end 

と実装ファイルに:

-(IBAction)hideOutlets:(UITapGestureRecognizer*)singleTap { 

btn1.hidden = YES; 
btn2.hidden = YES; 
text.hidden = YES; 

} 

私のヘッダファイル内

簡単な質問は、ユーザーが画面上で再びタップすると、アウトレットを再表示/表示する方法です。

-(IBAction)hideOutlets:(UITapGestureRecognizer*)singleTap 
{ 
    btn1.hidden = !btn1.hidden; 
    btn2.hidden = !btn2.hidden; 
    text.hidden = !text.hidden; 
} 

これは単にあなたの現在のブール状態を否定し、あなたは

EDIT :)終わっ:

答えて

1

は、私が使用してこれを実現する最も簡単な方法だと思い がいるかどうかを確認するにはタッチはフォームのどこかにありましたが、ボタンやテキストフィールドには触れていませんでした。それは動作するはずです。もうUITapGestureRecognizerを使用する必要はありません。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint loc = [touch locationInView:[touch view]]; 
    if (!(CGRectContainsPoint(btn1.frame, loc) || CGRectContainsPoint(btn2.frame, loc) || CGRectContainsPoint(text.frame, loc))) 
    { 
     btn1.hidden = !btn1.hidden; 
     btn2.hidden = !btn2.hidden; 
     text.hidden = !text.hidden; 
    } 
} 
+0

万この簡単な答えとその本当に理解しやすいのはありがとう。私は数日前にこのコードを見たことがありますが、それはうまくいきません。うまくいかないと思うので、今私は満足しています。再度、感謝します。 – redribbon

+0

申し訳ありませんが、ボタンをクリックしたときに何らかのエラーが発生します。他のすべてのアウトレットも、そのボタンに(すでに別のビューに変更するために)そのボタンに何らかのアクションを加えても隠されています。別の代入文に応答してください: – redribbon

+0

Iveが答えを編集しました – Majster

関連する問題