如何在UITextView中获取文本后设置textAlignment?

时间:2014-05-20 07:12:58

标签: ios iphone alignment uitextview

如果我的textAlignment文字(从右到左,像阿拉伯语)方向,我想在文字方向的基础上设置textView,那么我想设置 textAlignment NSTextAlignmentRight否则我的对齐方式为NSTextAlignmentLeft。现在问题是我知道如何在UITextView输入时检查文本方向,但是一旦我们在UITextView中获得文本,那么我们如何检查它。下面是我的截图和代码enter image description here

enter image description here

 if ([self.txtOutputTranslator baseWritingDirectionForPosition:[self.txtOutputTranslator beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionLeftToRight)
{
    self.txtOutputTranslator.textAlignment=NSTextAlignmentLeft;
}
else
{
    self.txtOutputTranslator.textAlignment=NSTextAlignmentRight;

}

由于我的代码显示我正在检查文本Direction一旦我得到输出文本但它总是运行else条件,因为我已将UITextView对齐设置为属性中的Right。任何建议都将不胜感激。谢谢提前。

2 个答案:

答案 0 :(得分:3)

似乎baseWritingDirectionForPosition方法根据textview的textalignement返回。

因此,您需要根据语言检查书写方向。 由于您手动执行应用程序,因此可以检查要翻译的语言是什么,您可以指定哪些是rtl或ltr。

如需进一步阅读,您可以查看 A lighter way of discovering text writing directionDetect Language of NSString

但你的问题应该更容易。 祝你好运

答案 1 :(得分:3)

@TechSeeko的答案是正确的,这是 Swift 4 示例:

func textViewDidChange(_ textView: UITextView) {
    let baseWritingDirection = textView.baseWritingDirection(for: textView.beginningOfDocument, in: .forward)
    switch baseWritingDirection {
    case .leftToRight:
        textView.textAlignment = .left // for example
    case .rightToLeft:
        textView.textAlignment = .right // for example
    case .natural:
        // WARNING: use natural alignment carefully as it won't work with reusable table view cells. In common cases baseWritingDirection won't return this parameter
        textView.textAlignment = .natural
    }
}