这是关于ios
我在UITextView
中使用了两个View
个对象(textView1和textView2),每个对象都有一些字符限制,其中包含以下一些场景:
我编写了代码,一切正常,但第三种情况除外,用户只能进入textView1
,但焦点仍在textView2
重现的步骤:
以下是快照:
这是书面代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.textView1 becomeFirstResponder];
}
- (void)textViewDidChange:(UITextView *)textView{
NSInteger restrictedLengthForTextView1 = 110;
NSInteger restrictedLengthForTextView2 = 130;
NSString *temp=textView.text;
if(textView == self.textView1){
if([[textView text] length] > restrictedLengthForTextView1){
textView.text=[temp substringToIndex:[temp length]-1];
[textView resignFirstResponder];
[self.textView2 becomeFirstResponder];
}
}else{
if([[textView text] length] > restrictedLengthForTextView2){
textView.text=[temp substringToIndex:[temp length]-1];
[self.textView2 resignFirstResponder];
}
}}
- void()textViewDidBeginEditing:(UITextView *)textView{
NSInteger restrictedLengthForTextView1 = 110;
NSLog(@"dalknwdlakwd");
if([[self.textView1 text] length] < restrictedLengthForTextView1){
if(textView == self.textView2){
[self.textView2 resignFirstResponder];
[self.textView1 becomeFirstResponder];
}
}}
请帮帮我..
答案 0 :(得分:1)
这是一个已知的错误,在同一个runloop中辞职并成为第一响应者。请尝试以下
[textView2 resignFirstResponder];
[textView1 performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
答案 1 :(得分:1)
请按以下方式进行:
<。>文件中的
@interface ViewController : UIViewController<UITextViewDelegate>
{
IBOutlet UITextView *txtView1;
IBOutlet UITextView *txtView2;
}
@end
<。>文件中的
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[txtView1 becomeFirstResponder];
txtView2.editable=NO;
}
实现如下的textView委托方法:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if(textView.tag==1)
{
if([textView.text length]>25)
{
txtView2.editable=YES;
[txtView2 becomeFirstResponder];
}
}
return YES;
}
我在第一个textview中将文本长度限制为24个字符作为示例。 我希望这会对你有所帮助。
答案 2 :(得分:1)
Annadurai答案的更新:2016年仍然是一个错误!在尝试别人的建议取消选择周围的tableview单元格和/或更改色调颜色后,这个答案对我有用:
[textView1 performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
仅供参考我的情况是我正在重新调整textView,重新加载表格,然后返回到同一个textView。在此修复之前 - 重新加载的textView上没有光标(是的我可以键入并查看字符。)在performSelector ... afterDelay之后 - 光标再次可见。