如果用户触摸UIImageView,请重新设置键盘

时间:2012-02-07 20:32:13

标签: ios uiview ios4 uiimageview

问题

我在后台顶部有一个带有UIImageView的xib文件。当用户触摸背景时,我将其设置为辞职,但是如果用户触摸UIImageView,我无法弄清楚如何让键盘辞职。

问题

如果键盘触及UIImageView或背景,我可以使用什么键盘才能退出?

设置

有一个事件设置用于侦听调用此方法的背景上的触摸

- (IBAction)backgroundTap:(id)sender{
[userPassword resignFirstResponder];
[userLogin resignFirstResponder];    
}

效果很好,但我不确定如何链接UIImageView。

3 个答案:

答案 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];

}

我就是这样做的。