如果我的textAlignment
文字(从右到左,像阿拉伯语)方向,我想在文字方向的基础上设置textView
,那么我想设置 textAlignment NSTextAlignmentRight
否则我的对齐方式为NSTextAlignmentLeft
。现在问题是我知道如何在UITextView
输入时检查文本方向,但是一旦我们在UITextView
中获得文本,那么我们如何检查它。下面是我的截图和代码
if ([self.txtOutputTranslator baseWritingDirectionForPosition:[self.txtOutputTranslator beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionLeftToRight)
{
self.txtOutputTranslator.textAlignment=NSTextAlignmentLeft;
}
else
{
self.txtOutputTranslator.textAlignment=NSTextAlignmentRight;
}
由于我的代码显示我正在检查文本Direction一旦我得到输出文本但它总是运行else条件,因为我已将UITextView
对齐设置为属性中的Right。任何建议都将不胜感激。谢谢提前。
答案 0 :(得分:3)
似乎baseWritingDirectionForPosition方法根据textview的textalignement返回。
因此,您需要根据语言检查书写方向。 由于您手动执行应用程序,因此可以检查要翻译的语言是什么,您可以指定哪些是rtl或ltr。
如需进一步阅读,您可以查看 A lighter way of discovering text writing direction 和 Detect 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
}
}