我想以编程方式设置标记文本,因为iOS5 UITextView和UITextField符合UITextInput,这应该是可能的,但由于某种原因,我总是将markedText
设为nil。 :(
我在这里缺少什么?
这是我尝试过的没有成功的事情:
(虽然textview是firstResponder)
1.-当文字视图不包含文字时:
text:“”,selectedRange:{0,0},markedText:nil。
[_textView setMarkedText:@"月" selectedRange:NSMakeRange(0, 1)];
结果: text:“”,selectedRange:{0,0},markedText:nil。 (没有改变)
2.-当文本视图包含文本+一些标记文本时:
text:“AAA”,selectedRange = {0,3},末尾标有文字:“太阳” 然后我做:
[_textView setMarkedText:@"地" selectedRange:NSMakeRange(0,3)];
结果: text:“AAA”,selectedRange:{0,3},markedText:nil; (标记的文字为零)
在这两种情况下,如setMarkedText:selectedRange:
将当前标记的文本(如果有的话)设置为nil。
任何帮助都将受到高度赞赏:)
由于标记文本的概念似乎不清楚,这里有一个解释:
在多阶段输入语言(例如日语)中,您可以输入常规文本(如英语)或输入标记文本(如日语)。
我在这里写了常规文字:regular text
然后我写了标记文字つ
然后我写了标记文字き
,因此附加成つき
。
标记文本(蓝色框中的文本)表示过渡或中间输入阶段,因为它可以变成其他称为候选者的字符/单词。候选人出现在大盒子里。
此屏幕截图是在iPad中使用蓝牙键盘时拍摄的,但在编写日语时使用软件键盘时会得到类似的结果。
在撰写つ
之前,textview是:
textView.text : "regular text"
textView.selectedRange : {12,0}
textView.markedText:nil
然后我写了つ
,文本视图变为:
textView.text : "regular textつ"
textView.selectedRange : {13,0}
textView.markedText: "つ"
然后我写了き
,文本视图变为:
textView.text : "regular textつき"
textView.selectedRange : {14,0}
textView.markedText: "つき"
文本视图的当前状态。
我希望能够以编程方式设置标记文本:)
这可能吗? - 根据UITextInput文档,它是。
答案 0 :(得分:6)
我的代码存在概念性问题。我可能只是忽略了一些小事,但我认为你的编程中只有一个简单的错误。
1)当文本视图不包含文本时:text: "", selectedRange : {0,0}, markedText: nil
:
[_textView setMarkedText:@"月" selectedRange:NSMakeRange(0, 1)];
Result: text: "", selectedRange: {0,0}, markedText: nil.
(没有任何改变)
2)当文字视图包含文字+一些标记文字时:text: "AAA"
,selectedRange: {0,3}
,markedText
在最后:“太阳”然后我这样做:
[_textView setMarkedText:@"地" selectedRangeNSMakeRange(0,3)];
Result: text: "AAA", selectedRange: {0,3}, markedText: nil;
(标记的文字为零)
我刚刚修复了我在Xcode中运行的代码中的问题。当我点击三个不同的按钮时,它运行完美,并更改了标记的文本。如果没有标记文本,则会附加并标记文本。
text
是UITextView
的名称:
-(IBAction)first
{
[text setMarkedText:@"test" selectedRange:NSMakeRange(0, 4)];
}
-(IBAction)second
{
[text setMarkedText:@"woo" selectedRange:NSMakeRange(0,4)];
}
在这里我点击了“第一个”
在这里我点击了“第二个”
我希望这会对你有所帮助并且值得赏金。
答案 1 :(得分:0)
在设置内容(并标记文本)之前,您是否已将UITextField添加到视图中?