我想以编程方式将我的UITextField输入置于听写模式,而无需用户调出并从键盘中选择听写.搜索了API文档但没有找到解决方案.有任何想法吗?
UITextField是否忽略inputDelegate?使用以下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.textField.inputDelegate = self;
NSLog(@"textField: %@", self.textField);
NSLog(@"delegate: %@", self.textField.inputDelegate);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
2012-03-26 20:43:49.560 InputTest[33617:f803] textField: <UITextField: 0x6c093a0; frame = (20 20; 280 31); text = ''; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x6c094d0>>
2012-03-26 20:43:49.561 InputTest[33617:f803] delegate: (null)
Run Code Online (Sandbox Code Playgroud)
它运行得很好,没有警告或异常,委托属性工作得很好.但是设置inputDelegate不会导致任何更改,也不会调用委托方法.
有没有办法在显示的键盘上添加取消按钮UITextField?查看UITextInputTraits协议参考,我找不到任何东西,包括尝试不同的键盘类型.
我有不同的例子,我们可以UITableViewCell根据UITextView实际上对我有用的增长来更新高度.我现在面临的问题是,我有以下更子视图UITextView内UITableViewCell.这样,单元格的高度会更新,但子视图的位置保持固定,从而导致UITextView子视图重叠.简而言之,我没有使用自动布局.
我该如何解决 ?
这三个屏幕截图有助于理解我的问题:
1.在显示TextView之前:
2.显示TextView后:
3.输入文字后:
我有用户界面,UISearchBar我实现了UISearchBarDelegate's searchBarSearchButtonClicked:来执行搜索.我没有一个有听写支持的设备来测试这个,所以我打算在这里推测......
在具有听写支持的设备上,我想在听写结束后立即执行搜索,而无需用户手动点击搜索按钮.
从iOS 5.1开始,UITextInput协议中有新的方法,理论上我可以挂钩dictationRecordingDidEnd.这是要走的路吗?
我想以编程方式设置标记文本,因为iOS5 UITextView和UITextField符合UITextInput,这应该是可能的,但由于某种原因,我总是得到markedText为零.:(我在这里失踪了什么?
这是我试过没有成功的:
(虽然textview是firstResponder)
1.-当文本视图不包含文本时:
text:"",selectedRange:{0,0},markedText:nil.
[_textView setMarkedText:@"?" selectedRange:NSMakeRange(0, 1)];
Run Code Online (Sandbox Code Playgroud)
结果: text:"",selectedRange:{0,0},markedText:nil.(没有改变)
2.-当文本视图包含文本+一些标记文本时:
文字:"AAA",selectedRange = {0,3},最后标记文字:"太阳"然后我做:
[_textView setMarkedText:@"?" selectedRange:NSMakeRange(0,3)];
Run Code Online (Sandbox Code Playgroud)
结果: 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
Run Code Online (Sandbox Code Playgroud)
然后我写?了,文本视图变成了:
textView.text : "regular text?"
textView.selectedRange : {13,0}
textView.markedText: "?"
Run Code Online (Sandbox Code Playgroud)
然后我写?了,文本视图变成了:
textView.text : "regular text??"
textView.selectedRange : {14,0}
textView.markedText: "??"
Run Code Online (Sandbox Code Playgroud)
这是文本视图的当前状态. …
(#゚Д゚)是一个5个字母的单词.但是在iOS中,[@"(#゚Д゚)"长度"是7.
为什么?
我<UITextInput>用来修改UITextField或中的文本UITextView.当我创建一个5个字符长度的UITextRange时,它可以覆盖(#゚Д゚).那么,为什么这个(#゚Д゚)看起来像一个5个字符的字UITextField和UITextView,但看起来像一个NSString的7个字符的字???
在这种情况下,如何获得正确长度的字符串?
回应听写的已知方法:
dictationRecordingDidEnd - 响应完成对口述短语的识别.
dictationRecognitionFailed - 响应失败的听写识别.
参考: UITextInput协议参考
从iOS 5.1开始,当用户在支持的设备上选择听写输入时,系统会自动将识别的短语插入当前文本视图中.UITextInput协议中的方法允许您的应用程序响应完成听写,如"使用听写"中所述.您可以使用UIDictationPhrase类的对象来获取表示用户已指定的短语的字符串.在不明确的听写结果的情况下,听写短语对象提供包含替代字符串的数组.
在UITextView中标记文本,但由于某种原因,它拒绝接受我用setMarkedTextStyle提供的任何内容.-markedTextStyle始终返回nil,标记的文本看起来总是相同(蓝色背景并保持文本颜色).
[_taggedUsersView setMarkedTextStyle:@{UITextInputTextColorKey: [UIColor whiteColor], UITextInputTextBackgroundColorKey: [UIColor tranceLinkBlue], UITextInputTextFontKey: [UIFont fontWithName:@"HelveticaNeue-Medium" size:14.0]}];
Run Code Online (Sandbox Code Playgroud)
我在创建textview时,在标记文本之前和之后尝试这样做.但它仍然保持默认样式,并为样式返回nil.
我花了好几个小时试图弄清楚如何创建/然后让自定义inputView工作.我有一个网格TextInputs(思考拼字游戏板)按下时应该加载自定义inputView插入文本.
我创建了一个包含自定义的.xib文件.我能够创建一个并且具有显示但却永远无法获得实际更新它的值/文本.UI elementsinputViewCustomInputViewControllerinputViewTextInput
苹果文档似乎很清楚如何使这个工作,我已经看到的许多教程一直在使用Obj-C(由于现在似乎无法在swift中完成的小事情,我无法转换) .
为实现customInputView多个textInputs(委托链,控制器,.xib,视图等)而应该实现的总体架构和必要的代码片段是什么?
uitextinput ×10
ios ×9
iphone ×3
uitextview ×3
dictation ×2
uitextfield ×2
cocoa-touch ×1
ios5 ×1
ios6 ×1
nsstring ×1
objective-c ×1
swift ×1
uisearchbar ×1
uitableview ×1