问题
我在后台顶部有一个带有UIImageView的xib文件。当用户触摸背景时,我将其设置为辞职,但是如果用户触摸UIImageView,我无法弄清楚如何让键盘辞职。
问题
如果键盘触及UIImageView或背景,我可以使用什么键盘才能退出?
设置
有一个事件设置用于侦听调用此方法的背景上的触摸
- (IBAction)backgroundTap:(id)sender{
[userPassword resignFirstResponder];
[userLogin resignFirstResponder];
}
效果很好,但我不确定如何链接UIImageView。
答案 0 :(得分:1)
确保UIImageView
禁用用户互动。然后应该将该元素的触摸传递给底层视图。这实际上完全忽略了图像视图上的点击。
或者,如果您想要出于其他原因捕获图片视图上的点按,则可以为UITapGestureRecognizer
创建UIImageView
,其行为是您的backgroundTap
方法或其他方法。 (您可能必须使用适当的签名创建一个不同的方法,以便与手势识别器一起使用,但上面的方法可能没问题。)
答案 1 :(得分:1)
你在找这个:
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backgroundTap:)];
[tapGesture setDelegate:self];
[imageView addGestureRecognizer:tapGesture];
答案 2 :(得分:1)
向视图添加点按手势。
在你的.h:
@interface YourViewController : UIViewController <UIGestureRecognizerDelegate>{
UITapGestureRecognizer *tap;
}
@property (nonatomic, strong /*if using ARC, if not then use retain*/) UITapGestureRecognizer *tap;
-(void) dismissKeyboard;
然后在你的.m:
@synthesize tap;
//in your viewDidLoad
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
tap.delegate = self;
-(void) viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window];
}
-(void) dismissKeyboard {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
if ([yourImageView isFirstResponder]) {
[yourImageView resignFirstResponder];
}
}
-(void) viewWillDisappear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
}
我就是这样做的。