设置UITextView的垂直滚动条一直显示

 

 

设置UITextView的垂直滚动条一直显示

 

//头文件  
#import <UIKit/UIKit.h>  
  
@interface TextView : UIView<UITextViewDelegate>{  
    UITextView *boxText;  
}  
//此方法可以不写
- (id)initWithFrame:(CGRect)frame withContext:(NSString *)text;  
  
@end  
  
  
//实现文件  
@implementation TextView  
  
/** 
 @method UITextView自定义重写封装 
 @param frame 位置 
 @param text 视图文本 
 */  
/*此方法可以不实现 只在UITextView初始化的地方实现verticalScrollBar方法和
-(void)scrollViewDidEndDecelerating:(UIScrollView *)sc方法(其他的代理方法可以根据需要添加)*/
- (id)initWithFrame:(CGRect)frame withContext:(NSString *)text  
{  
    self = [super initWithFrame:frame];  
    if (self) {  
        boxText = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];  
        boxText.delegate = self;  
        [boxText setText:text];  
        [boxText setTextColor:[UIColor whiteColor]];  
        [boxText setTextAlignment:UITextAlignmentLeft];  
        [boxText setBackgroundColor:[UIColor clearColor]];  
        [boxText setFont:[UIFont systemFontOfSize:15]];  
        [boxText setEditable:YES];  
        [self addSubview:boxText];  
        [boxText release];  
          
        [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(run) userInfo:nil repeats:NO];  
    }  
    return self;  
}  
  
#pragma mark --视图移动后判断是否是UIImage,然后判断是否是竖滚动条设置让滚动条显示--  
-(void)verticalScrollBar{  
    [boxText setContentOffset:CGPointMake(0, 10) animated:NO];  
    for(UIView *img in [boxText subviews]){  
        if ([img isKindOfClass:[UIImageView class]] && img.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin){  
            [img setAlpha:1];  
        }  
    }  
}  
  
#pragma mark --滚动视图结束移动后判断是否是UIImage,然后判断是否是竖滚动条设置让滚动条显示--  
-(void)scrollViewDidEndDecelerating:(UIScrollView *)sc{  
    for (UIView *img in [sc subviews]) {  
        if ([img isKindOfClass:[UIImageView class]] && img.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin){  
            [img setAlpha:1];  
        }  
    }  
}  
  
  
@end  

 

转载于:https://www.cnblogs.com/Rong-Shengcom/p/6221492.html

你可以通过以下代码实现 UITextView 长按复制粘贴的功能: ```swift // 设置允许复制和粘贴 textView.isSelectable = true textView.allowsEditingTextAttributes = true textView.textContainerInset = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0) // 添加长按手势识别器 let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress(_:))) textView.addGestureRecognizer(longPressGesture) // 长按手势识别器的响应函数 @objc func longPress(_ gestureRecognizer: UIGestureRecognizer) { // 获取长按的位置 let point = gestureRecognizer.location(in: textView) // 获取长按位置所在的字符索引 let characterIndex = textView.layoutManager.characterIndex(for: point, in: textView.textContainer, fractionOfDistanceBetweenInsertionPoints: nil) // 判断长按位置是否在文本范围内 if characterIndex < textView.textStorage.length { // 获取长按位置所在的单词 let range = textView.tokenizer.rangeEnclosingPosition(TextViewPosition(document: textView.textStorage), with: .word, inDirection: UITextDirection(rawValue: 1)) let word = textView.text(in: range!) // 弹出菜单 let menuController = UIMenuController.shared if !menuController.isMenuVisible { let copyMenuItem = UIMenuItem(title: "复制", action: #selector(copyText(_:))) let pasteMenuItem = UIMenuItem(title: "粘贴", action: #selector(pasteText(_:))) menuController.menuItems = [copyMenuItem, pasteMenuItem] menuController.setTargetRect(CGRect(x: point.x, y: point.y, width: 0, height: 0), in: textView) menuController.setMenuVisible(true, animated: true) } } } // 复制文本 @objc func copyText(_ sender: Any) { UIPasteboard.general.string = textView.text(in: textView.selectedTextRange!) } // 粘贴文本 @objc func pasteText(_ sender: Any) { if let pasteString = UIPasteboard.general.string { let selectedRange = textView.selectedRange let mutableAttributedString = NSMutableAttributedString(attributedString: textView.attributedText) mutableAttributedString.replaceCharacters(in: selectedRange, with: NSAttributedString(string: pasteString)) textView.attributedText = mutableAttributedString } } ``` 这里使用了 `UITextView` 的 `UITextInputTokenizer` 对象来获取长按位置所在的单词,并通过 `UIMenuController` 弹出菜单来实现复制和粘贴的功能。同时,需要在 `UITextView` 中设置 `isSelectable` 和 `allowsEditingTextAttributes` 属性为 `true`,并添加长按手势识别器来启用长按功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值