UITextView inputAccessoryView的坑

问题

我集成了一个UITextView类,然后重载了

- (UIView *)inputAccessoryView;


方法,在这个方法里返回一个UIView,最后形成这样的效果
UITextView效果

我设置.editable属性为NO,理论上应该不可以编辑,但是我惊奇的发现当我双击我的TextView底部,我收到了UIKeyboardWillChangeFrameNotification这个通知。

查找问题

首先我把我的TextView全部替换为系统的UITextView,发现没有这个问题出现。


- (UIView *)inputAccessoryView 
{
    if (self.hideToolBar)
    {
        return nil;
    }
    return self.toolbarAccessoryView;
}

在我的- (UIView *)inputAccessoryView方法里面打上一个断点,发现当我双击的时候这个方法会被调用。于是我又把我的方法改成这样


- (UIView *)inputAccessoryView 
{
    return nil;
}

当我再双击的时候,不会收到UIKeyboardWillChangeFrameNotification通知,现在问题是找到了,把代码改成这样


- (UIView *)inputAccessoryView 
{
    if (self.hideToolBar || self.editable == NO)
    {
        return nil;
    }
    return self.toolbarAccessoryView;
}

就能达到我想要的效果。但是问题的根源还是没有找到,期待大神来探讨。


wua_wua2012
3 声望1 粉丝

iOS开发,来自湖北,混迹在上海