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