Ios 在UITextView中获取文本后如何设置文本对齐?
我试图在文本方向的基础上设置Ios 在UITextView中获取文本后如何设置文本对齐?,ios,iphone,alignment,uitextview,Ios,Iphone,Alignment,Uitextview,我试图在文本方向的基础上设置textAlignment如果我的textView有文本(从右到左像阿拉伯语)方向,那么我想设置textAlignmentNSTextAlignmentRight否则我的对齐方式将是NSTextAlignmentLeft。现在的问题是,我知道如何在输入UITextView时检查文本方向,但一旦我们在UITextView中获得文本,我们就可以如何检查它。下面是我的截图和代码 if ([self.txtOutputTranslator baseWritingDirect
textAlignment
如果我的textView
有文本(从右到左像阿拉伯语)方向,那么我想设置textAlignmentNSTextAlignmentRight
否则我的对齐方式将是NSTextAlignmentLeft
。现在的问题是,我知道如何在输入UITextView
时检查文本方向,但一旦我们在UITextView
中获得文本,我们就可以如何检查它。下面是我的截图和代码
if ([self.txtOutputTranslator baseWritingDirectionForPosition:[self.txtOutputTranslator beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionLeftToRight)
{
self.txtOutputTranslator.textAlignment=NSTextAlignmentLeft;
}
else
{
self.txtOutputTranslator.textAlignment=NSTextAlignmentRight;
}
正如我的代码所示,我在获取输出文本后检查文本方向,但它始终运行else条件,因为我已在属性中将
UITextView
对齐设置为Right。如有任何建议,将不胜感激。提前感谢。baseWritingDirectionForPosition方法似乎根据textview的TextAlignment
因此,您需要根据语言检查书写方向。
由于您是手动执行应用程序,因此可以检查要翻译的语言,并且您可以已经指定哪些语言是rtl或ltr
为了进一步阅读,您可以查看
和
但你的问题应该容易得多。
祝你好运@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
}
}
你愿意接受建议吗?您可以将所有文本居中对齐,这样就不必担心文本是左还是右。寻找最佳解决方案将是最后的选择。顺便说一句,谢谢您的建议。:)