gpt4 book ai didi

ios - 如何通过用户在其他任何地方点击或滑动来删除 UIView?

转载 作者:行者123 更新时间:2023-11-28 23:02:18 28 4
gpt4 key购买 nike

我在 UIView 中为 iPhone 创建了一个迷你弹出菜单,我希望用户能够在除了选择其中之一之外做任何事情时关闭该 View 选项。因此,如果用户点击/滑动/捏合屏幕上的任何其他元素,弹出 View 应该消失。

但是,我不想检测会阻止其他事情发生的手势...例如,下面有一个 UITableView,如果我向上或向下滑动它,我希望它按预期移动以及关闭迷你弹出 View 。

我应该使用多个手势识别器,还是应该使用 touchesBegan,或者有更好的方法吗?

最佳答案

把这个放在你的 UIViewController

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if (touch.view!=yourView && yourView) {
[yourView removeFromSuperview];
yourView=nil;
}

}

编辑:更改以检测触摸并仅在 View 存在时删除

EDIT2:您可以将以下内容添加到您的UIButtons/UITableView 方法

 if (yourView) {
[yourView removeFromSuperview];
yourView=nil;
}

或将 touchesBegan:withEvent: 作为 touchDown 事件添加到您的按钮。

这两个操作都很烦人,但看不到另一种方法,因为 touchesBegan 方法不会被交互元素调用。

EDIT3:正确的废料,认为我已经钉好了

在你的界面中添加UIGestureRecognizerDelegate

@interface ViewController : UIViewController <UIGestureRecognizerDelegate> {

然后在你的 viewDidLoad 添加这个

UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapMethod)];
tapped.delegate=self;
tapped.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tapped];

然后在你的 viewController 中添加这两个方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if (touch.view!=yourView && yourView) {
return YES;
}
return NO;
}

-(void)tapMethod {
[yourView removeFromSuperview];
yourView=nil;
}

关于ios - 如何通过用户在其他任何地方点击或滑动来删除 UIView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824814/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com