在UItextView inputView上使用我的自定义阿拉伯语键盘,我用阿拉伯语文本填充我的textView但是无法将书面文本对齐到右边....需要帮助将文本对齐到右边。
-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{
if(showCustomKeyboard==NO){
[textView resignFirstResponder];
textView.inputView=nil;
[textView becomeFirstResponder];
return YES;
}
else{
[textView resignFirstResponder];
if(customKeyboard==nil){
customKeyboard=[[CustomKeyboard alloc] initWithFrame:CGRectMake(0, 264, 320, 216)];
[customKeyboard setDelegate:self];
}
if([[UIApplication sharedApplication] respondsToSelector:@selector(inputView)]){
if (textView.inputView == nil) {
textView.inputView = customKeyboard;
[textView becomeFirstResponder];
}
}
self.customKeyboard.currentField=textView;
[textView becomeFirstResponder];
}
return YES;
}
答案 0 :(得分:16)
您可以使用setBaseWritingDirection选择器设置UITextView的书写方向:
UITextView *someTextView = [[UITextView] alloc] init];
[someTextView setBaseWritingDirection:UITextWritingDirectionLeftToRight forRange:[someTextView textRangeFromPosition:[someTextView beginningOfDocument] toPosition:[someTextView endOfDocument]]];
代码有点棘手,因为UITextView支持文本的不同部分具有不同的书写方向。在我的例子中,我使用[someTextView textRangeFromPosition:[someTextView beginningOfDocument] toPosition:[someTextView endOfDocument]]来选择UITextView的全文范围。如果您的需求不同,您可以调整该部分。
您可能还想检查UITextView中的文本是否为LTR到RTL。你可以这样做:
if ([someTextView baseWritingDirectionForPosition:[someTextView beginningOfDocument] inDirection:UITextStorageDirectionForward] == UITextWritingDirectionLeftToRight) {
// do something...
}
请注意,我使用[someTextView beginOfDocument]指定了文本的开头,并使用UITextStorageDirectionForward向前搜索。您的需求可能会有所不同。
如果你继承UITextView,那么用“self”替换所有这些代码示例,当然不是“someTextView”。
我建议在http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextInput_Protocol/Reference/Reference.html阅读UITextView符合的UITextInput协议。
关于在iOS 5.1或更早版本中使用textAlignment属性的警告:如果您将此方法与设置基本书写方向一起使用,则会出现问题,因为在UITextView中左对齐时的RTL文本实际上在视觉上与右侧对齐。将RTL书写方向设置为右对齐将使其与UITextView的左侧对齐。
答案 1 :(得分:4)
尝试textAlignment
属性。
textView.textAlignment = UITextAlignmentRight;
编辑:也许CATextLayer可以帮到你,有人建议使用这个课程来自定义文字,但我从未亲自使用过它......
否则,您可以强制textView以UITextFieldDelegate方法反转您的输入:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
只要用户在文本字段中键入新字符或删除现有字符,文本字段就会调用此方法。 在这里,您可以使用新的NSString替换输入,您可以将字符从右向左放置。
希望这是有道理的......
啊......别忘了设置
textView.textAlignment = UITextAlignmentRight;
在右侧移动提示。
答案 2 :(得分:1)
试试这段代码:
yourtextview.textAlignment = UITextAlignmentRight;
希望这会对你有所帮助。
答案 3 :(得分:0)
此处或任何其他帖子中没有人提及的是确保您没有为TextView调用sizeToFit。它简单地将textView(而不是文本)对齐到左侧,从而产生文本从左到右而不是从右到左的错觉。
答案 4 :(得分:0)
如果您是从故事板创建UI,则首要项目的领先或尾随空间和值的设置约束将是尊重语言方向
答案 5 :(得分:0)
您可以迅速使用此代码
textView.makeTextWritingDirectionRightToLeft(true)