【问题标题】:How to make other interfaces than keyboard unavailable when keyboard appears?出现键盘时如何使键盘以外的其他界面不可用?
【发布时间】:2014-07-02 21:54:14
【问题描述】:

我学习了如何在单击返回键或用户触摸文本字段外时关闭键盘。

一种方法是委托一个类来管理文本字段并编写代码:

- (BOOL) textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES; //I'm not sure whether I choose YES or NO
}

另一种方式如下:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if (touchToDismissKeyboard.phase == UITouchPhaseBegan) {
    [self.firstTextField resignFirstResponder];
    }
}

但是,通过上述任何一种方法,我发现其他接口已“启用”,例如与文本字段在同一视图上的分段控件或开关。此外,当这些启用的界面被点击时,键盘仍然在屏幕上。

然后,我的问题是如何在键盘出现时使其他界面不可用(“启用 = NO”),以及如何在不更改其他界面值的情况下通过触摸键盘或文本字段之外的任何位置来关闭键盘。

【问题讨论】:

  • 很抱歉,我无法准确地解释我的情况。我的问题是如何在编辑文本字段(出现键盘时)时使键盘以外的其他界面不可点击,我认为这与您建议的问题不同。无论如何,我终于找到了解决问题的方法,但是感谢您的评论,我会记住在我提问之前搜索 Q&A 这可能对我有帮助。

标签: ios objective-c


【解决方案1】:

使用点击手势识别器

UITapGestureRecognizer *tapRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dissmissKeyBoard)];
tapRecognize.delegate = self;
tapRecognize.numberOfTapsRequired = 1;
[self.viewB addGestureRecognizer:tapRecognize];

然后dissmissKeyBoard方法实现。

- (void)dissmissKeyBoard
{
    [yourTextField resignFirstResponder];
}

希望这会对你有所帮助。

【讨论】:

  • 感谢您的评论。但是,使用您的代码,仍然启用了键盘以外的其他接口,尽管我希望这些接口不可用。经过几个小时的工作,我找到了在“-(void)textFieldDidBeginEditing”方法中编写代码使接口不可用的方法,并且成功。无论如何,抱歉我的含糊问题,再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多