0

这是我第一次在这里寻求帮助,尽管过去 6 个月我一直潜伏在这个论坛上。所以这里有一个简单的,我知道它以前被问过很多次,但没有一个提供真正有用的简单答案。希望这里有足够好心的人可以通过有用的提示帮助我和许多其他需要这个的人。

所以这就是我已经为隐藏网点所做的:

在头文件中:

@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;

}

我的简单问题是:如果用户再次点击屏幕,如何再次取消隐藏/显示网点?

4

1 回答 1

1

我认为实现这一目标的最简单方法是使用:

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

这只会否定你当前的布尔状态,你就完成了:)

编辑:要检查触摸是否在表单上的某处但不在按钮或文本字段上,请尝试使用它。它应该工作。不需要再使用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;
    }
}
于 2012-04-29T18:58:11.893 回答