Mid*_*ori 7 iphone cocoa-touch uitextfield ipad
我正在iPad上创建一个应用程序.我创建使用自定义键盘UITextField
的inputView
财产.要在光标位置插入文本,我使用复制和粘贴方法(http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html),它可以正常工作.现在,我想创建删除键.我正在使用的代码是:
if (textField.text.length > 0) {
textField.text = [textField.text substringToIndex:textField.text.length-1];
}
Run Code Online (Sandbox Code Playgroud)
但是,正如您所知,它只会删除最后一个字符,无论光标位于何处.有谁知道更好的解决方案?
非常感谢你!
我懂了!这是该shouldChangeCharactersInRange
方法的委托方法实现.
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange) range replacementString:(NSString *) string {
if ([string isEqualToString:@"?"]) {
// NSLog(@"Backspace Pressed");
NSMutableString *text = [textField.text mutableCopy];
// NSLog(@"Length: %d Location: %d", range.length, range.location);
if (range.length > 0) {
[text deleteCharactersInRange:range];
}
if (range.length == 0 && range.location != 0) {
NSRange backward = NSMakeRange(range.location - 1, 1);
// NSLog(@"Length: %d Location: %d", backward.length, backward.location);
[text deleteCharactersInRange:backward];
}
// NSLog(@"%@", text);
textField.text = text;
return NO;
} else {return YES;}
}
Run Code Online (Sandbox Code Playgroud)
它与UIPasteboard方法一起用于将文本输入到a中UITextField
,这意味着您必须将删除键链接到将任意unicode字符粘贴到文本字段(例如?
)中的方法,以及调用委托方法时,您认识到替换字符串是该特定字符.
range
如果存在活动选择,则从那里删除textField文本的可变字符串中的字符,或者如果没有选择,则从区域中抓取前一个字符,只是插入符号.
小智 5
迟到了(再一次; - )...与iOS 5,UITextField
符合UITextInput
协议,它扩展了UITextField
与一些有用的方法和属性,包括selectedTextRange
属性,它是相当于selectedRange
在UITextView
.
考虑切换到 a UITextView
,它有一个selectedRange
属性,用于获取当前选定的字符范围或光标位置(如果未选择任何内容)。不幸的是,UITextField
没有这个方法,而且我还没有找到另一种方法来查找光标位置。
该属性的文档可以在 Apple 网站上selectedRange
找到。它由一个 组成,其中是光标位置,是所选字符的数量(如果未选择任何字符,则为零。)您的代码必须如下所示:NSRange
selectedRange.location
selectedRange.length
textView.text = [textView.text stringByReplacingCharactersInRange:textView.selectedRange withString:@""];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9095 次 |
最近记录: |