UITextView:使用UITextView文本iOS内联UIButton

时间:2016-04-30 07:31:58

标签: ios objective-c uibutton uitextview

我有UITextView,右下角有UIButton。我的UITextView允许多行文字,即输入密钥时,textView高度会动态增加(类似于短信应用)。但我的问题是,在输入文字时,文字会落后于UIButton。我希望文本在到达图像时停止并在下一行继续,文本没有任何中断。这可能吗?enter image description here

3 个答案:

答案 0 :(得分:1)

这个解决方案适合我。我有UItextview的子类,我把这个代码。

UIBezierPath* exclusionPath = [UIBezierPath bezierPathWithRect:_buttonClear.frame];
        self.textContainer.exclusionPaths  = @[exclusionPath];

答案 1 :(得分:0)

使用apple提供的Text Kit Framework。你可以实现这个

这是ray wenderlich tut https://www.raywenderlich.com/50151/text-kit-tutorial

具体来说,您需要为UITextView设置exclusionPaths

UIBezierPath* exclusionPath = [_timeView curvePathWithOrigin:myButton.center];
_textView.textContainer.exclusionPaths  = @[exclusionPath];

答案 2 :(得分:0)

尝试以下代码:

UIBezierPath* exclusionPath = [UIBezierPath bezierPathWithRect:Button.frame];
        self.textContainer.exclusionPaths  = @[exclusionPath];

使用UITextView Delegate并执行类似的操作

- (void)textViewDidChange:(UITextView *)textView
{

    //Get Buttons Y position and Allow TextView Frame changes until it is less than or equal buttons Y position

    if (textView.frame.origin.y+textView.frame.size.height < Button.frame.origin.y) {

        CGFloat fixedWidth = textView.frame.size.width;
        CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
        CGRect newFrame = textView.frame;
        newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
        textView.frame = newFrame;
    }

}