Ios 触摸开始不被呼叫

Ios 触摸开始不被呼叫,ios,objective-c,uiview,Ios,Objective C,Uiview,我使用UIPicker来填充UITextField,而不是键盘。这很有效,但我现在不能关闭UIPicker。我希望能够点击屏幕上的任何位置并关闭UIPicker。我已经试过了每一种触碰方法,但没有人会开火 setUserInteractionEnabled:是。 我不确定这是否有什么不同,但我用的是故事板 我应该在AppDelegate中设置一些内容来监听触摸吗 这是我的 #import <UIKit/UIKit.h> @interface RNMemberTableViewCo

我使用UIPicker来填充UITextField,而不是键盘。这很有效,但我现在不能关闭UIPicker。我希望能够点击屏幕上的任何位置并关闭UIPicker。我已经试过了每一种触碰方法,但没有人会开火

setUserInteractionEnabled:是。 我不确定这是否有什么不同,但我用的是故事板

我应该在AppDelegate中设置一些内容来监听触摸吗

这是我的

 #import <UIKit/UIKit.h>

@interface RNMemberTableViewController : UITableViewController<UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UIPickerView *behaviorPicker;
@property (nonatomic, weak) IBOutlet UIDatePicker *dateOfRecordPicker;
@property (nonatomic, strong) NSArray *behaviorLevels;
@property (weak, nonatomic) IBOutlet UITextField *behaviorTextField;

@end
提前谢谢
-Bob

您可以在选择器下添加与控制器视图大小相同的透明按钮

当选择器显示时,设置
button.hidden=NO
;当选择器隐藏时,设置
button.hidden=YES


有很多方法可以隐藏选择器。最简单的方法是设置
picker.hidden=YES

您始终可以尝试以下操作:

-(void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapReceived:)];
    [tapGestureRecognizer setDelegate:self];
    [self.view addGestureRecognizer:tapGestureRecognizer];
}

-(void)tapReceived:(UITapGestureRecognizer *)tapGestureRecognizer
{
    // do something, like dismiss your view controller, picker, etc., etc.
}

希望这有助于…

如果您使用的是UIScrollView,那么

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

不会被调用,因为ToucheSStart是UIView而不是UIScrollView的方法

这很管用,但你知道为什么触摸开始不会触发吗?这是最佳实践吗?我是Obj CI的新手,我仍然想知道为什么Touchs方法不起作用。如果在常规(非表视图控制器)上设置此方法,您将使用ToucheSBegind()看到不同的结果-表正在捕获。但是,正确的方法仍然是使用手势识别器。要使此代码正常工作,您需要您的视图控制器也符合此委托:@Alan_根本不需要。Bob,如果您喜欢工作答案,请相应地将其标记为“已答问”。实际上,TouchesStart是UIResponder的一种方法。UIView继承自UIResponder,UIScrollView继承自UIView,因此这里的推理不准确。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event