【问题标题】:Obj C - resign first responder on touch UIViewObj C - 在触摸 UIView 上辞职第一响应者
【发布时间】:2011-08-03 04:16:42
【问题描述】:

我试图让键盘在触摸屏幕时消失,这个问题在 stackoverflow 中得到了全面解答。多亏了这里的一个线程,当按下回车键时,我能够让键盘消失。我在后台触摸辞职第一响应者时运气不佳。正在输入方法,我在方法中有一个 NSLog 说,“在 backgroundTouched 中”,但键盘还在。

我尝试将 UIView 设为 UIControl 类,以便可以使用触摸事件。 journalComment 是一个 UITextView。

-(IBAction)backgroundTouched:(id)sender
    {
        [journalComment resignFirstResponder];
        NSLog(@ "in backgroundTouched");

}

我还尝试在调用 backGroundTouched 方法的所有内容下添加一个不可见按钮。我想可能是我在界面生成器中遗漏了一些东西,但我不确定是什么。

感谢您的帮助!

这适用于完成按钮:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
 replacementText:(NSString *)text
{
    // Any new character added is passed in as the "text" parameter
    if ([text isEqualToString:@"\n"]) {
        // Be sure to test for equality using the "isEqualToString" message
        [textView resignFirstResponder];

        // Return FALSE so that the final '\n' character doesn't get added
        return FALSE;
    }
    // For any other character return TRUE so that the text gets added to the view
    return TRUE;
}

【问题讨论】:

  • 你要辞去视图中所有输入元素的第一响应者吗?
  • 这是一个滚动视图,带有三页按钮,“好心情,坏心情等”,然后是一个 textview 评论框。我是否需要将按钮辞职,因为它们首先被触摸。我将在顶部添加适用于完成按钮的代码。
  • 也尝试为滚动视图辞职第一响应者。
  • 谢谢,但也没有运气。

标签: objective-c keyboard uitextview hide


【解决方案1】:

我发现以下代码在没有委托方法的情况下最适合我的文本视图(不是文本字段):

首先你在你的视图上设置一个点击手势识别器:

- (void)viewDidLoad{

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc]
        initWithTarget:self
                action:@selector(tap:)];
    tapRecognizer.delegate = self;
    [self.view addGestureRecognizer:tapRecognizer];

}

然后在你的点击方法中:

- (void)tap:(id)sender
{
// use to make the view or any subview that is the first responder resign (optionally force)    
[[self view] endEditing:YES];
}

这应该允许您在视图中的任何位置关闭键盘。

希望对你有帮助

【讨论】:

  • 嗨 xRab ,很好的答案,感谢您的建议here 如果您一直对这种线程感兴趣,我已经将我的代码改进为最新的 swift
【解决方案2】:

试试这个。我们之前遇到过这个问题,但最终找到了正确的解决方案。

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

        [yourtextfield resignFirstResponder];

        // you can have multiple textfields here


    }

这应该可以解决推动背景时键盘不消失的问题。

【讨论】:

  • 谢谢。抱歉这个新问题,但是一旦我把它放在我的 .m 和 .h 文件中,我如何将它绑定到界面生成器中的文本字段?这是从文件所有者的 ctrl 拖动到选择我以编程方式创建的 UITextField 的文本字段吗?
  • @rd42 您只需将该 sn-p 添加到您的 .m 文件中即可。如果没有,请随意添加更多代码。
  • 好的,如果我想出其他代码会有所帮助:),我会把它放进去。谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
相关资源
最近更新 更多