Iphone Textview不调用ToucheSStart

Iphone Textview不调用ToucheSStart,iphone,uitextfield,uitextview,touchesbegan,Iphone,Uitextfield,Uitextview,Touchesbegan,我有一个文本字段,当我触摸屏幕上的其他地方时,它会隐藏键盘(通过我的touchesbeated函数和辞职…诸如此类)。但当我触摸文本视图时,触摸开始不会被调用,键盘也不会隐藏!有没有办法调用touchesbeent来隐藏键盘?我见过的最好的方法是添加一个覆盖文本视图的透明子视图,并首先处理touchesbeent。然后,您可以检测文本字段之外的触摸,并通过让文本字段辞去第一响应者的身份来关闭键盘 例如,以IB或编程方式创建覆盖子视图。放置并调整其大小,使其覆盖文本视图,并为其提供清晰的颜色。如果

我有一个文本字段,当我触摸屏幕上的其他地方时,它会隐藏键盘(通过我的touchesbeated函数和辞职…诸如此类)。但当我触摸文本视图时,触摸开始不会被调用,键盘也不会隐藏!有没有办法调用touchesbeent来隐藏键盘?

我见过的最好的方法是添加一个覆盖文本视图的透明子视图,并首先处理touchesbeent。然后,您可以检测文本字段之外的触摸,并通过让文本字段辞去第一响应者的身份来关闭键盘

例如,以IB或编程方式创建覆盖子视图。放置并调整其大小,使其覆盖文本视图,并为其提供清晰的颜色。如果通过IB添加视图,则在加载主视图时将其隐藏,这样它就不会吸收触摸,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    overView.hidden = YES;
}
然后,当文本字段开始编辑时,取消隐藏视图:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    overView.hidden = NO;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    overView.hidden = YES;
}
文本字段结束编辑后,重新放置视图:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    overView.hidden = NO;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    overView.hidden = YES;
}
添加触摸开始检测何时触摸未隐藏的概览:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];

    // Resign first responder if touch is outside text field
    if ([touch view] != myTextField)
        [myTextField resignFirstResponder];

    // Send touches up the responder chain (pass them through)
    [self.nextResponder touchesBegan:touches withEvent:event];
}

您也可以通过自定义手势来实现这一点,但这仅适用于iOS 4.x,而且在我看来,更为复杂。

还有一种在触摸时隐藏键盘的简单方法开始:当您使用UITextView输入数据时

第一步。确保在类声明时已扩展Textviewdelegate

@接口YourClassName:UIViewController{ IBMOutlet UITextView*txtMyView;}

第二步。在查看did加载功能中将委托设置为self

- (void)viewDidLoad
{
    txtMyView.delegate = self;
}
第三步。使用textView名称在TouchesBegind函数中编写类似代码

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
            [txtMyView resignFirstResponder];
        [super touchesBegan:touches withEvent:event];

}

谢谢并致以问候。

我假设您的UITextView不可编辑,因为您不希望在触摸键盘时键盘弹出,因此请确保在UITextView的视图属性中未选中“已启用用户交互”。您也可以在ViewController中这样写:

textView.userInteractionEnabled = NO;

这将允许用户事件传递到superview,并将调用TouchesBegind和其他委托方法。

我尝试了此方法,但我的textview从未调用TouchesBegind。。。只有通过触摸标签/空白,触摸才开始起作用:O.当用户点击整个屏幕时,是否要隐藏键盘,包括文本字段?
userInteractionEnabled=false
对我无效。当设置
textView.userInteractionEnabled=false时,将触摸发送到其superview的位置