iOS系统菜单控制器UIMenuController使用简介(二)-阿里云开发者社区

开发者社区> 珲yy少> 正文

iOS系统菜单控制器UIMenuController使用简介(二)

简介: iOS系统菜单控制器UIMenuController使用简介
+关注继续查看

系统默认支持提供的按钮触发方法列举如下:


//剪切按钮的方法

- (void)cut:(nullable id)sender NS_AVAILABLE_IOS(3_0);

//复制按钮的方法

- (void)copy:(nullable id)sender NS_AVAILABLE_IOS(3_0);

//粘贴按钮的方法

- (void)paste:(nullable id)sender NS_AVAILABLE_IOS(3_0);

//选择按钮的方法

- (void)select:(nullable id)sender NS_AVAILABLE_IOS(3_0);

//全选按钮的方法

- (void)selectAll:(nullable id)sender NS_AVAILABLE_IOS(3_0);

//删除按钮的方法

- (void)delete:(nullable id)sender NS_AVAILABLE_IOS(3_2);

//改变书写模式为从左向右按钮触发的方法

- (void)makeTextWritingDirectionLeftToRight:(nullable id)sender NS_AVAILABLE_IOS(5_0);

//改变书写模式为从右向左按钮触发的方法

- (void)makeTextWritingDirectionRightToLeft:(nullable id)sender NS_AVAILABLE_IOS(5_0);

上面所列举的方法声明在UIResponder头文件中,实际上,除了上面的方法,关于UIMenuController上面的按钮,系统中还有许多私有方法,列举如下:


//替换按钮

- (void)_promptForReplace:(id)arg1{

   NSLog(@"promptForReplace");

}

//简体繁体转换按钮

-(void)_transliterateChinese:(id)sender{

   NSLog(@"transliterateChinese");

}

//文字风格按钮

-(void)_showTextStyleOptions:(id)sender{

   NSLog(@"showTextStyleOptions");

}

//定义按钮

-(void)_define:(id)sender{

   NSLog(@"define");

}

-(void)_addShortcut:(id)sender{

   NSLog(@"addShortcut");

}

-(void)_accessibilitySpeak:(id)sender{

   NSLog(@"accessibilitySpeak");

}

//语言选择按钮

-(void)_accessibilitySpeakLanguageSelection:(id)sender{

   NSLog(@"accessibilitySpeakLanguageSelection");

}

//暂停发音按钮

-(void)_accessibilityPauseSpeaking:(id)sender{

   NSLog(@"accessibilityPauseSpeaking");

}

//分享按钮

-(void)_share:(id)sender{

   NSLog(@"share");

}

  在实际开发中,开发这完全不需要使用这些私有的方法,UIMenuItem类提供给开发者进行自定义菜单按钮与触发方法,示例如下:


[self becomeFirstResponder];

   UIMenuItem * item = [[UIMenuItem alloc]initWithTitle:@"自定义" action:@selector(newFunc)];

   [[UIMenuController sharedMenuController] setTargetRect:[sender frame] inView:self.view];

   [UIMenuController sharedMenuController].menuItems = @[item];

   [UIMenuController sharedMenuController].menuVisible = YES;

-(BOOL)canBecomeFirstResponder{

   return YES;

}

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

   if (action == @selector(newFunc)) {

       return YES;

  }

   return NO;

}

-(void)newFunc{

   NSLog(@"自定义方法");

}

效果如下图所示:

image.png



UIMenuController还有如下的属性用来设置其显示的位置:


//显示的位置

@property(nonatomic) UIMenuControllerArrowDirection arrowDirection;

//枚举如下:

/*

typedef NS_ENUM(NSInteger, UIMenuControllerArrowDirection) {

   //默认 基于当前屏幕状态

   UIMenuControllerArrowDefault, // up or down based on screen location

   //箭头在上的显示模式

   UIMenuControllerArrowUp NS_ENUM_AVAILABLE_IOS(3_2),

   //箭头在下的显示模式

   UIMenuControllerArrowDown NS_ENUM_AVAILABLE_IOS(3_2),

   //箭头在左的显示模式

   UIMenuControllerArrowLeft NS_ENUM_AVAILABLE_IOS(3_2),

   //箭头在右的显示模式

   UIMenuControllerArrowRight NS_ENUM_AVAILABLE_IOS(3_2),

};

*/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS11问题: 定位服务在iOS11系统上不能使用?
iOS11问题: 定位服务在iOS11系统上不能使用? Q:我刚刚用iOS11 SDK重新构建了应用程序,发现定位服务现在根本不起作用。 原因:A:因为苹果现在增加了一项新的隐私保护功能 NSLocationAlwaysAndWhenInUseUsageDeion, 并且原有的 NSLocationAlwaysUsageDeion 被降级为 NSLocationWhenInUseUsageDeion。
973 0
iOS系统开发提升体验优化方案
随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。
305 0
iOS伪亮度调节/控制
iOS 5.0之前的版本并没有开放控制系统亮度的接口,所以app能做到的只是比系统设置的亮度更暗,具体做法就是在整个app的keywindow之上再放一个window,设置黑色背景,通过控制alpha值来达到明暗变化。
737 0
DevExpress - 使用 GaugeControl 标尺组件制作抽奖程序 附源码
  前不久,公司举办了15周年庆,其中添加了一个抽奖环节,要从在读学员中随机抽取幸运学员,当然,这个任务就分到了我这里。   最后的效果如下,启动有个欢迎页面,数据是来自Excel的,点击开始则上面的学号及姓名等信息开始随机滚动,显示区域自适应长度变化等。
939 0
iOS翻页视图控制器UIPageViewController的应用(一)
iOS翻页视图控制器UIPageViewController的应用
25 0
+关注
594
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载