我有一个TextView,当我按下"完成"按钮时,TextView会开始新的一行。
我已经实现了这些方法并添加了所有委托。
@property (nonatomic, strong) IBOutlet UITextView *textField;
-(void)textViewDidEndEditing:(UITextView *)textView //was UITextField
{
[self.textField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextView *)textField{
[textField resignFirstResponder];
return YES;
}
我在属性检查器中将键盘返回键设置为“完成”。 我希望键盘上的完成键能够取消第一响应者,但似乎没有起作用。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
// error thrown here saying code will never execute
if(range.length + range.location > textField.text.length)
{
return NO;
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return newLength <= 300;
}
如何将这两个语句结合起来,使其能够正常工作而不出错?
textViewDidEndEditing:
方法中删除对resignFirstResponder
的调用。顺便说一下,您发布了一个UITextView
的委托方法和另一个UITextField
的委托方法。您到底使用哪个?textFieldShouldReturn:
方法不会与UITextView
一起使用。它是为UITextField
设计的。巨大的区别。 - rmaddy