gpt4 book ai didi

c# - 单点触控 : UISegmentedControl Select a segment that is already selected

转载 作者:行者123 更新时间:2023-11-30 17:15:05 24 4
gpt4 key购买 nike

我正在尝试使用 UISegmentedControl 来控制我的表格的排序顺序,特别是我想在已经选择的段上注册一个点击(以反转我的排序)。因此,每当点击任何片段时,我都会尝试引发 UIControlEvent.ValueChanged 事件。

我已经从 UISegmentedControl 覆盖了 SelectedSegment 并在 xcode 中为我的元素使用这个自定义类,但是,看起来好像在 Segment 时没有调用此代码控件被点击(它通过=S加载 View 时被调用)。

[Register("ReselectableSegment")]
public class ReselectableSegment : UISegmentedControl
{
static Selector selInit = new Selector("init");

[Export("init")]
public ReselectableSegment()
: base(NSObjectFlag.Empty)
{
Handle = Messaging.IntPtr_objc_msgSend(this.Handle,
selInit.Handle);
}

public ReselectableSegment (IntPtr handle) : base(handle){}

public override int SelectedSegment
{
[Export ("SelectedSegment:")]
set {
if(this.SelectedSegment == value)
this.SendActionForControlEvents(UIControlEvent.ValueChanged);

base.SelectedSegment = value;
}
}
}

此问题之前曾在以下位置提出过:UISegmentedControl register taps on selected segment ,但是这个问题是针对 ObjC 的,而这个问题是针对 C#/Monotouch 的。

最佳答案

问题的最后一个答案link您提供的包含最佳(工作良好)答案(我赞成,您也应该赞成 ;-)。

注意:从评论来看,之前的答案似乎(可能)适用于 iOS4 但不适用于 iOS5。

这是执行您要查找的操作的代码。我使用 RectangleF .ctor 来测试它,如果您使用其他东西,您可能必须添加自己的 .ctor(但它不像您的原始代码那么复杂,例如,不需要选择器对其进行子类化)。

    class MyUISegmentedControl : UISegmentedControl {

public MyUISegmentedControl (RectangleF r) : base (r) {}

public override void TouchesBegan (NSSet touches, UIEvent evt)
{
int current = SelectedSegment;
base.TouchesBegan (touches, evt);
if (current == SelectedSegment)
SendActionForControlEvents (UIControlEvent.ValueChanged);
}
}

关于c# - 单点触控 : UISegmentedControl Select a segment that is already selected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com