代码之家  ›  专栏  ›  技术社区  ›  Calvin

无法使用UITextView重新注册FirstResponder

  •  4
  • Calvin  · 技术社区  · 16 年前

    我有一个 UITextView . 我实现了导航栏 UIBarButtonItem 为我的第一个回应者辞职 UITExtVIEW .

    但是,当调用Selector方法时,键盘不会被取消。我检查了uitextview的响应器状态 isFirstResponder 它返回“是”。我也查过了 canResignFirstResponder 返回值为否。

    我一定是错过了什么……为什么还没回来?

    我知道我可以超越 取消第一响应程序 通过对UItextView进行子类化,但如果可能的话,我想避免这种情况。

    下面是代码段:

    - (void) commentCancelButtonTouched:(id)sender
    {
        NSLog(@"Cancel button touched");
        [self.navigationBar popNavigationItemAnimated: NO];
    
        if ([self.textInput.textView canResignFirstResponder] == NO) {
            NSLog(@"I don't want to resign!");
        }
    
        [self.textInput.textView resignFirstResponder];
    }
    3 回复  |  直到 14 年前
        1
  •  5
  •   DShah    14 年前

    为了防止有人想在你触摸文本视图外时隐藏键盘,这很容易…

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [super touchesBegan:touches withEvent:event];
    
        [self.xFront resignFirstResponder];
    }
    

    Xfront是我的出口 UITextView .

        2
  •  3
  •   Dan Ray    16 年前

    通过uiview子类寻址uitextfield有点不标准。如果我是你,我会直接从你的视图控制器内部处理这个uitextfield。将其设置为视图控制器的合成属性,为其提供关键字iboutlet,以便您可以在Interface Builder中讨论它,然后确保插座连接到文本字段。

    换句话说,而不是谈论 self.textInput.textView 你想说的是 self.textView 直接。再仔细检查一下你的ib插座连接,因为我怀疑这才是真正的问题所在。

        3
  •  1
  •   Calvin    16 年前

    我知道了。我在“textinput”视图中有一个“uitextViewDelegate”方法, textViewShouldEndEditing 那是为了回归 NO . 把它改成 YES 它解决了这个问题。