当在视图之外点击时,让UIView辞职第一响应者

时间:2010-08-07 16:35:15

标签: iphone objective-c cocoa-touch uiview

当用户点击视图范围之外时,有没有办法让UIView重新签署其第一个响应者状态?

4 个答案:

答案 0 :(得分:2)

在其他视图或视图中捕获触摸。处理该触摸时,请调用您的视图重新设置其响应者状态的选择器。

答案 1 :(得分:0)

在做研究时找到更好的答案......

Get the current first responder without using a private API

有关于如何导航视图以找到可用作解决方案基础的第一响应者的示例代码

您可以先放置透明视图,然后将视图放置为子视图。然后透明视图中的任何触摸事件都可用于辞职第一响应者。

如果有多个视图在要管理的主视图边界之外,这可能是一种方法

答案 2 :(得分:0)

这很简单,需要分两步完成:

  1. 添加手势识别器以捕捉视图点按
  2. 辞职第一响应者
  3. 感谢first part的@Nathan Eror。我们可以在viewDidLoad方法中添加一个手势识别器,以便在用户点击屏幕时进行注册:

    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    [self.view addGestureRecognizer:singleFingerTap];
    

    接下来我们将添加检测此功能的函数和删除键盘的代码:

    - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];
    
        [textField resignFirstResponder];
    }
    

    值得注意的是,如果您的视图中有多个textFields,则需要将它们全部重新签名,因为无法知道哪个是当前的第一响应者。

答案 3 :(得分:-1)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [yourtextfield resignFirstResponder];
    //You can have multiple textfields in here
}