0
uitextview 클래스의 메서드를 재정의하려고 노력 중이며 작동하는 클래스에서이 메서드를 사용하려고합니다. 그러나 제대로 작동하지 않습니다. 나는 사람들이 별도의 수업에서 그것을 무시하는 것을 보았다. 고맙습니다. 클래스의 상단에UITextView 재정의
#import <UIKit/UIKit.h>
@interface MyTextView : UITextView
@end
@interface ViewController : UIViewController
@property (nonatomic, retain) IBOutlet MyTextView * tv;
@end
//////////////////////////////////
#import "ViewController.h"
@implementation MyTextView
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
[UIMenuController sharedMenuController].menuVisible = NO; //do not display the menu
// [self resignFirstResponder]; //do not allow the user to selected anything
return NO;
}
@end
@implementation ViewController
@synthesize tv;
- (void)viewDidLoad
{
[super viewDidLoad];
tv = [[MyTextView alloc] init];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
-(void)textViewDidChangeSelection:(MyTextView *)textView
{
NSRange range = textView.selectedRange;
if(range.location<textView.text.length)
{
NSString * getRidOfFirstHalfString = [tv.text substringFromIndex:range.location];
NSString * selectedString = [getRidOfFirstHalfString substringToIndex:range.length];
NSLog(@"%@",selectedString);
}
else
{
// Do what ever you want to do
}
}
@end
내가 함께 IBOutlet – BDGapps
을 사용할 수 있습니다, 그럼 나는 IB가 UITextView 서브 클래스를 볼 것으로 판단된다. 따라서 IB에서는 UITextView에서 캔버스로 드래그합니다. 그런 다음 해당 클래스를 MyTextView로 변경해야합니다. 그럼 콘센트 등을 만들 수 있습니다. –
지금은 작동하지만 오류가 발생합니다. 너 y 알아? 'NSRangeException'이라는 캐치되지 않은 예외로 인해 앱이 종료됩니다. 이유 : '*** - [__ NSCFString substringFromIndex :] : 범위 또는 범위를 벗어나는 인덱스' – BDGapps