我的UIView
包含UITextView
。 UIView
是在UIViewController
内启动的。
但是当我触摸UITextView
框时,没有任何反应。键盘不会出现,委托方法也不会响应交互。
代码:
noteText = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 700, 240)];
noteText.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2].CGColor;
noteText.layer.borderWidth = 2;
[noteText setEditable:YES];
noteText.userInteractionEnabled = YES;
noteText.returnKeyType = UIReturnKeyDone;
noteText.font = [UIFont fontWithName:@"Calibri" size:16];
noteText.textColor = [UIColor blackColor];
[self addSubview:noteText];
更新1
我从UIViewController中删除了所有其他视图,并且只在UIViewController中放置了一个UITextView,但仍未做出反应。光标或键盘都不会出现。
答案 0 :(得分:7)
noteText = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 700, 240)];
noteText.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2].CGColor;
noteText.layer.borderWidth = 2;
[noteText setEditable:YES];
noteText.userInteractionEnabled = YES;
noteText.returnKeyType = UIReturnKeyDone;
noteText.font = [UIFont fontWithName:@"Calibri" size:16];
noteText.textColor = [UIColor blackColor];
[self addSubview:noteText];
//两个建议
self.userInteractionEnabled = YES; // superview may blocks touches
self.clipsToBounds = YES; // superview may clips your textfield, you will see it
答案 1 :(得分:4)
我发现了错误。
在一个类中,我将UITextView分类而不是子类,并将canBecomeFirstResponder设置为NO。
答案 2 :(得分:3)
试试这个: 在.h文件中符合委托UITextViewDelegate
:<UITextViewDelegate>
你的.m文件中的:
noteText.delegate = self;
委托方法:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
[textView becomeFirstResponder];
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
//resign for exapmple
return YES;
}
希望这有帮助!
答案 3 :(得分:3)
我知道现在已经很晚了,但也许对某些人来说这会很有帮助。我遇到了同样的问题,使用
后它就消失了[self setSelectable:true];
在我的UITextView子类中。
答案 4 :(得分:2)
检查一下:
在右侧UIWindow
添加您的viewcontroller。
设置窗口makeKeyAndVisible
并使用此方法将rootViewController
添加到窗口:
- (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
我认为这在xib文件或appdelegate
中有问题。
答案 5 :(得分:1)
尝试覆盖UIView中的- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
以查看它是否正在接收触摸
为了以防万一,请尝试为您的UIView对象设置userInteractionEnabled = YES;
。如果它以某种方式设置为NO,它将逐渐渗透到其所有子视图
答案 6 :(得分:1)
也许你的覆盖-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
方法有误?也许你在那里做resignFirstResponder
或者首先提出一些观点?
答案 7 :(得分:1)
每当发生类似这样的事情时,请检查以下项目,
dealloc
中正确保留和发布文本视图。(如果您未使用ARC
)subview
完全适合父视图。同时确保所有superviews
文本视图都是这种情况。delegate
是否设置正确。如果完成所有这些操作,请尝试在文本视图顶部添加一个按钮,然后检查是否正在调用target selector
。如果是,则问题在于文本视图委托或发布声明。否则问题在于文本视图的框架设置或它的超视图。