4

我有两个文本视图作为 UITableView 的子视图inputAccessoryView,其中一个是不可编辑的,但我仍然希望允许人们突出显示和使用(复制|定义),另一个在inputAccessoryView.

问题是当突出显示不可编辑的 textView 时,输入附件视图出现......(为什么!?)好像 tableView 突然成为第一响应者,我猜是因为它的一个子视图已成为第一响应者。问题是,我是否需要将这个不可编辑的 textView 从 tableViews 子视图中取出,或者有什么方法可以抑制 inputAccessoryView 在突出显示时弹出?后者将是首选。

-(UITextView *)textView
{
    if (!_textView) {

        _textView = [[UITextView alloc]initWithFrame:CGRectZero];
        //_textView.delegate = self;
        _textView.font = [UIFont questionDemiBoldFontOfSize:36.0f];
        _textView.backgroundColor = [UIColor clearColor];
        _textView.editable = NO;
        _textView.scrollEnabled = NO;
        _textView.textColor = [UIColor whiteColor];
        _textView.tintColor = [UIColor whiteColor];
        _textView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin;

    }

    return _textView;
}
4

2 回答 2

1

这在 UITextView 子类中对我有用。斯威夫特 4

override func becomeFirstResponder() -> Bool {
    guard isEditable else { return false }
    return super.becomeFirstResponder()
}
于 2018-02-15T16:50:16.060 回答
0

我通过添加解决了这个问题

- (UIView *)inputAccessoryView
{
    if (self.textView.isFirstResponder)
        return nil;

    return self.accessoryView;
}

注意 显然在某些情况下,您可能必须先在非编辑 textView 上手动调用 resignFirstResponder,然后才能恢复您的附件视图。不过,它相当干净,将来可能会对某人有所帮助。

于 2015-05-02T09:40:37.607 回答